[Serveur Dédié] Serveur Mail

Introduction

Dans cette article nous allons voir la mise en place d’un serveur mail utilisant OpenSMTPD comme service SMTP et Dovecot en tant que service IMAP ainsi que Roundcube comme webmail.

OpenSMTPD a été vu dans un précédent article.

Dovecot est un service permettant la mise en place de serveur imap ou pop3. Dovecot a été vu sur ce site sur ce lien.

Nous allons présenter la configuration de OpenSMTPD ainsi que celle de Dovecot puis nous détaillerons les modifications qui on été nécessaires au fonctionnement des deux services ainsi que son utilisation d’un point de vue utilisateur via le déploiement de Roundcube sur un serveur web Nginx hébergé  par FreeBSD 9.2. Continuer à lire

OpenBSD 5.5 est sorti

Comme tous les 6 mois une nouvelle version d’OpenBSD est publiée.

OpenBSD est un système d’exploitation orienté sécurité et réseau, dont les principaux avantages sont la stabilité, grâce aux audits sur le code source, mais également l’ensemble très large de fonctionnalités réseau qu’il fournit.

Continuer à lire

OpenSMTPD, Premiers pas

Nous utilisons tous des services de messagerie en ligne tel que Gmail, Outlook, Yahoo… Mais si vous vouliez prendre le contrôle de vos mails? comment faire?

Comparons la technologie Exchange de Microsoft avec ses CAL’s et ses licences et son budget ou les technologies open-source comme Sendmail, Postfix ou dans notre cas OpenSMTPD.

OpenSMTPD

Afin d’avoir un service aussi-complet que Gmail il faudra mettre en place plusieurs briques et OpenSMTPD en fait partie. OpenSMTPD est  un service SMTP libre utilisant le-dit protocole comme défini dans la RFC 5321. Il permet d’échanger des e-mails avec d’autres systèmes utilisant ce protocole comme Sendmail, Postfix, etc…

OpenSMTPD est un service « jeune » qui a voulu reprendre la simplicité de compréhension et de configuration du firewall Packet Filter d’OpenBSD. Ce service est implémenté depuis OpenBSD 4.6 dans la branche « unstable » et depuis OpenBSD 5.3 en tant que stable.

Ici nous utilisons la version 5.4.1 d’OpenSMTPD.

Le MAN est la première phase de l’approche pour utiliser ce service, il fournit les premières étapes pour un déploiement propre.

Maintenant que le paramétrage du service au niveau du système est fait nous allons passer à la configuration du fichier « smtpd.conf ».

Le service est à présent configuré, il nous reste à accepter les connexions externes sur le port 25 avec Packet Filter (CF plus loin) et à redémarrer le service smtpd avec la commande /etc/rc.d/smtpd restart.

Pour vérifier votre configuration Opensmtpd comme pour PF il existe la commande smtpd -n.

Pour lancer smtpd en mode debug lancer la commande smtpd -dv.

Configurez maintenant Packet Filter (rappel: fichier /etc/pf.conf)

Vérifiez maintenant la syntaxe et chargez le jeux de règles:

Pour conclure cette partie, réalisons un test:

Allons un peux plus loin dans notre configuration et renforçons la sécurité:

Chiffrement TLS

Accordons une analyse de cette ligne de configuration du fichier smtpd.conf

listen on pcn0 port 25 : le service écoutera sur l’interface pcn0 sur le port 25 ( si le paramètre « all » est actif, le service écoutera sur toutes les interfaces)

tls-require : Force les clients à établir une connexion sécurisée avant d’être autorisés à dialoguer au SMTP, l’option tls seule peux suffire mais tls-require renforce globalement en forçant les clients à établir une connectrion sécurisé avant d’être autorisé à démarrer une transaction SMTP. Cette option nécessite l’utilisation et la création de certificats.
Il est utile de noter que si nous ne créons qu’un certificat et sa clé et non le CA ainsi que le DH le service utilisera  ces paramètres par défaut.

pki dev.unix-experience.fr Nous spécifions les certificats par l’instruction pki qui nous permet de spécifier l’emplacement du certificat ainsi que de sa clé. « dev.unix-experience.fr » correspond à l’argument hostname comme spécifié dans le man de smtpd.conf.

Ce mécanisme est similaire au macro de Packet filter et doivent donc être déclaré en amont de la configuration

hostname Hermes : permet de spécifier un nom pour la bannière smtpd.

Test d’envoi

Nous allons à présent réaliser un test d’envoi de mail via la commande

mail, en ayant lancé smtpd en mode debug, ainsi nous pourrons comprendre les interactions par les logs.

Ceci est le détail des interactions qui ont eu lieu pendant la communication avec le serveur SMTP. On y retrouve les champs du destinataire et de l’émetteur.

Si on regarde les logs de plus près, nous pouvons observer que le service est extrêmement verbeux:

Nous pouvons alors décrire les étapes de réception du mail par dans un premier par le MTA qui à rechercher un alias liant le destinataire (root@localhost), une fois identifié comme l’utilisateur « unixexperience », le MTA transmet le message au MDA interne de opensmtpd en  attribuant alors l' »evpid » que l’on peux interprété comme « enveloppe identifer » au MDA.

Ensuite une session interne s’initialise ou le message va être délivré dans l’emplacement Maildir correspond à l’utilisateur unixexperience.

Configuration d’un relais

Nous pouvons considérer vouloir faire relayer nos mails par notre service SMTP dans le cadre où les ports ou la destination de notre SMTP est bloquée à notre emplacement géographique ou tout simplement pour en faire un relais Nous allons donc ajouter une règle qui relaiera nos mails via GMAIL.

Voici à quoi ressemble notre fichier smtpd.conf:

Pour arriver à cette configuration nous avons dû réaliser plusieurs actions.

Nous avons donc crée un fichier contenant les informations d’identification pour utiliser le relais de google. Ensuite nous avons créé le fichier « secrets.db » qui sera utilisé par smtpd et restreint les permissions sur ce fichier ainsi que son propriétaire et le groupe auxquels il appartient pour que ceux-ci puissent être lisible par le daemon d’OpenSMTPD. Nous avons renseigné ce fichier sous cette forme dans « smtpd.conf ».

Maintenant la régle du relai:

accept from local for any  : Nous acceptons les envoie de mail localement pour n’importe quel destination.

relay via tls+auth://label@smtp.gmail.com:587 auth <secrets> : Nous relayons via une authentification TLS en utilisant les information d’authentification correspondant à l’étiquette label sur le smtp de Gmail sur le port 587 en utilisant la table secrets.

Conclusion

Nous reprendrons OpenSMTPD dans un article consacré à la mise en place d’un serveur mail complet avec la technologie de virtualisation libvirt.

Ce qu’il faut retenir de OpenSMTPD:

– Produit en cours de développement- Ajout de nouvelles fonctionnalités dans le futur
– Facilité de compréhension de la configuration

Ce qui est valable aujourd’hui pour son utilisation ne le sera sans doute plus demain.

Source:

Merci à la Mailing List d’OpenSMTPD pour m’avoir éclaircit sur le fonctionnement des étiquettes ainsi qu’une relecture de l’article.

http://www.opensmtpd.org/fr/list.html

http://www.openbsd.org/cgi-bin/man.cgi?query=smtpd&sektion=8

Monter une AP Wi-Fi avec OpenBSD

Suite à un récent achat de matériel afin de me débarrasser de ma livebox qui plante trop souvent, j’ai choisi de faire mon propre routeur ADSL.

Pour faire un routeur, rien ne vaut un OS de qualité: OpenBSD. Au niveau hardware, j’ai choisi une board Alix 2d13 et une carte mini PCI Wi-Fi Atheros DNMA92 et ses antennes.

Nous allons voir dans ce tutoriel comment configurer OpenBSD afin de transformer notre routeur en borne Wi-Fi.

IMG_20131105_203131

Continuer à lire

R&D: amélioration d’OpenOSPF

Suite à des travaux d’installatation d’une liaison intersite avec de nouveaux routeurs de bordure BGP+OSPF sous OpenBSD, je me suis rendu compte d’une limitation technique d’OpenOSPF.

En effet, mes routeurs devant distribuer les routes via GRE+OSPF, ils redistribuaient la route par défaut (obligatoire pour les routeurs internes), la route était redistribuée sur le tunnel GRE et provoquait une boucle de routage coupant le WAN.

La second limitation technique était celle de BGP et OSPF. OSPF étant prioritaire, si on redonde des routeurs de bordure, la route par défaut provoque une boucle de routage entre les routeurs de bordure.

OpenOSPF ne disposant pas de dispositif de filtrage, et devant en avoir un rapidement j’ai donc décidé de patcher le logiciel afin d’intégrer un dispositif de filtrage permettant de garder la cohérence de l’algorithme SPF tout en empêchant le système d’intégrer la route.

Je vous partage ce petit patch de 147 lignes permettant d’intégrer la fonctionnalité sur OpenOSPF (version d’OpenBSD 5.3), sous licence BSD.

Continuer à lire

Sortie d’OpenBSD 5.3

OpenBSD 5.3 est sorti en ce 1er mai. Il s’agit d’un release intéressant en terme de fonctionnalités:

  • Le nouveau service npppd permet d’offrir un service de tunnels PPTP/LT2P(IPsec)/PPPOE, et est capable de se connecter à un serveur Radius.
  • Amélioration sur les processus de routage, notamment OpenBGPd
  • OpenSMTPd bénéficie d’énormément de remaniements en terme de fonctionnalités:
    • Une syntaxe proche de celle de PF
    • Il est possible de matcher des utilisateurs et domaines
    • Des performances augmentées
    • et bien d’autres choses
  • Des améliorations de performance notamment sur les drivers disque
  • Il est désormais possible de booter sur un raid 1 soft chiffré
  • De nouvelles fonctionnalités avec OpenSSH 6.2
  • Amélioration du support matériel, notamment des cartes Broadcom 5717,5719,5720 que l’on retrouve dans les serveurs Dell récents

Un changelog plus complet est disponible ici

Pour upgrader c’est très simple:

  • Booter sur l’ISO d’OpenBSD 5.3
  • Choisir upgrade
  • Sélectionner le disque et la partition
  • Demander à faire un fsck des partitions non-root (on ne sait jamais)
  • Choisir le cd des paquets OpenBSD
  • Eventuellement retirer les paquets X11 et Games (-x* -g*)
  • Rebooter

Pour finir vous pouvez faire un sysmerge afin de mettre à jour les fichiers /etc du système

  • mount /dev/cd0c /mnt
  • sysmerge -s /mnt/5.3/amd64/etc53.tgz

Mise en place de pare-feu/routeurs hautement disponibles avec CARP et pfsync + GRE et OSPF et IPSEC

Introduction

Nous allons voir dans cette article comment mettre en place de la haute disponibilité sur pare-feu en utilisant CARP et pfsync. Ensuite nous relierons deux sites par un tunnel GRE chiffré en IPSEC.

Ce tutoriel est réalisé sous Virtualbox.

Schéma global de la solution:

Infrastructure Continuer à lire

Monter un proxy-cache performant avec Squid et OpenBSD

Les serveurs de proxy sont devenues monnaie courante, pour ne pas dire obligatoires en entreprise (notamment pour la collecte de logs). Le service le plus répandu est Squid, que ce soit en version 2.7 ou 3.1, les versions les plus fréquentes à l’heure actuelle (statistiques du 1er janvier 2013)

Pour ce tutoriel, nous allons utiliser OpenBSD 5.2 et Squid 3.3.4 ainsi que SquidGuard 1.4p3. La configuration de Squid ne sera pas détaillée en terme de sécurité, seuls les éléments d’interaction avec le système et entre Squid et SquidGuard seront rapidement évoqués. Nous n’utiliserons pas l’authentification. Continuer à lire

Migrer d'OpenBSD 5.1 à OpenBSD 5.2

OpenBSD 5.2 est sorti hier (le 1er novembre 2012). Voyons comment basculer d’OpenBSD 5.1 à OpenBSD 5.2. Le cas pratique présenté ici est la bascule d’une passerelle réseau redondée avec CARP (elle aurait pu être load balancée).

Je vous rappelle que l’équipe OpenBSD ne recommande pas de passer d’une version à une trop récente et de suivre l’évolution du système.

Temps de mise à jour (hors compilation d’éléments tiers): 12 minutes

Étape 1: Mise à niveau du système:

  1. Redémarrez votre serveur sur le CD d’OpenBSD 5.2
  2. Choisissez Upgrade puis votre clavier (fr pour nous)
  3. Choisissez le disque contenant la racine de votre système puis la partition racine. Un fsck va être effectué. Continuer à lire