Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
sysadmin:install_postfix_sasl [2009/12/04 20:46]
james ajout conf client mail
sysadmin:install_postfix_sasl [2020/06/25 00:19] (Version actuelle)
james [Configuration initiale] ajout permit_sasl_authenticated dans les helo_restrictions
Ligne 1: Ligne 1:
 +{{tag>​smtp mail serveur howto installation auth sasl postfix ipv6}}
 +
 ====== Installer un serveur de mail authentifié ====== ====== Installer un serveur de mail authentifié ======
  
Ligne 15: Ligne 17:
 ===== Installation des paquets ===== ===== Installation des paquets =====
  
-<​code>​apt-get install postfix libsasl2-2 libsasl2-modules sasl2-bin</​code>​+<​code>​apt-get install postfix libsasl2-2 libsasl2-modules sasl2-bin ​procmail</​code>​ 
 + 
 +Choisir le mode "Site internet"​ à l'​installation de postfix, même si nous allons changer le fichier de configuration de postfix généré lors de cette installation.
  
 ===== Configuration initiale ===== ===== Configuration initiale =====
Ligne 21: Ligne 25:
 La machine enverra mail.mondomaine.com comme nom de serveur mail (et qui doit donc etre resolvable en DNS depuis le monde extérieur sous peine de voir vos mails refusés par les autres serveurs)\\ La machine enverra mail.mondomaine.com comme nom de serveur mail (et qui doit donc etre resolvable en DNS depuis le monde extérieur sous peine de voir vos mails refusés par les autres serveurs)\\
 Les certificats SSL seront générés pour smtp.mondomaine.com Les certificats SSL seront générés pour smtp.mondomaine.com
 +
 +  * fichier /​etc/​mailname :<​code>​
 +mail.mondomaine.com</​code>​
  
   * fichier /​etc/​postfix/​main.cf :<​code>​   * fichier /​etc/​postfix/​main.cf :<​code>​
Ligne 45: Ligne 52:
 smtpd_tls_session_cache_database = btree:​${data_directory}/​smtpd_scache smtpd_tls_session_cache_database = btree:​${data_directory}/​smtpd_scache
 smtp_tls_session_cache_database = btree:​${data_directory}/​smtp_scache smtp_tls_session_cache_database = btree:​${data_directory}/​smtp_scache
 +smtpd_tls_mandatory_ciphers = medium
 +tls_medium_cipherlist = AES128+EECDH:​AES128+EDH
  
 # auth smtp TLS # auth smtp TLS
Ligne 79: Ligne 88:
 smtpd_helo_required = yes smtpd_helo_required = yes
 # la table /​etc/​postfix/​helo_access permet d'​accepter/​rejeter sur des patterns du HELO # la table /​etc/​postfix/​helo_access permet d'​accepter/​rejeter sur des patterns du HELO
-smtpd_helo_restrictions = permit_mynetworks,​ check_helo_access hash:/​etc/​postfix/​helo_access,​ reject_invalid_hostname,​ reject_non_fqdn_hostname,​ reject_unknown_hostname+# on autorise les clients authentifiés si le helo n'est pas interdit dans la table helo_access 
 +smtpd_helo_restrictions = permit_mynetworks,​ check_helo_access hash:/​etc/​postfix/​helo_access,​ 
 +                          permit_sasl_authenticated,​ 
 +                          ​reject_invalid_hostname,​ reject_non_fqdn_hostname,​ reject_unknown_hostname
  
 smtpd_sasl_auth_enable = yes smtpd_sasl_auth_enable = yes
Ligne 87: Ligne 99:
 broken_sasl_auth_clients = yes broken_sasl_auth_clients = yes
  
-smtpd_recipient_restrictions = permit_mynetworks,​ permit_sasl_authenticated,​ permit_tls_clientcerts,​reject_unauth_destination, ​reject_unauth_pipelining +smtpd_recipient_restrictions = permit_mynetworks,​ permit_sasl_authenticated,​ permit_tls_clientcerts,​ 
-smtpd_sender_restrictions = permit_mynetworks, ​permit +                                ​reject_unauth_pipelining, reject_unknown_recipient_domain,​ 
-smtpd_client_restrictions = permit_mynetworks,​ permit_sasl_authenticated,​ reject_unauth_destination,​ reject_unauth_pipelining+                                reject_non_fqdn_sender,​ reject_non_fqdn_recipient,​ 
 +                                reject_unauth_destination 
 + 
 +smtpd_sender_restrictions = permit_mynetworks, ​permit_sasl_authenticated 
 +smtpd_client_restrictions = permit_mynetworks,​ permit_sasl_authenticated,​ 
 +                                ​reject_unauth_destination,​ reject_unauth_pipelining 
 +                                ​
 # voir http://​www.postfix.org/​postconf.5.html#​reject_unauth_pipelining pour plus d'info # voir http://​www.postfix.org/​postconf.5.html#​reject_unauth_pipelining pour plus d'info
 smtpd_data_restrictions = reject_unauth_pipelining,​ permit smtpd_data_restrictions = reject_unauth_pipelining,​ permit
  
-# filtrage du contenu avec amavis (conteneur antivirus/​antispam) : ne pas mettre cette ligne si vous n'avez pas installé/​configuré ces logiciels +# filtrage du contenu avec amavis (conteneur antivirus/​antispam) ​: oupa : ne pas mettre cette ligne si vous n'avez pas installé/​configuré ces logiciels 
-content_filter=smtp-amavis:​[127.0.0.1]:​10024+#content_filter=amavisfeed:​[127.0.0.1]:​10024 
 + 
 +# exlusion des protocoles pourris 
 +smtpd_tls_mandatory_protocols=!SSLv2,​!SSLv3,​!TLSv1,​!TLSv1.1 
 +smtpd_tls_protocols=!SSLv2,​!SSLv3,​!TLSv1,​!TLSv1.1 ​                                           
 </​code>​ </​code>​
   * fichier "/​etc/​postfix/​windows_virus_checks"​ :<​code>​   * fichier "/​etc/​postfix/​windows_virus_checks"​ :<​code>​
Ligne 110: Ligne 133:
 </​code>​ </​code>​
 <​note>​toute modification sur ce fichier doit être suivie de l'​execution de la commande <​code>​postmap /​etc/​postfix/​helo_access</​code></​note>​ <​note>​toute modification sur ce fichier doit être suivie de l'​execution de la commande <​code>​postmap /​etc/​postfix/​helo_access</​code></​note>​
 +
 +  * livraison des mails avec procmail : nous utiliserons le format Maildir pour stocker les mails dans /​var/​mail/​$UTILISATEUR : fichier /​etc/​procmailrc :<​code>​
 +VERBOSE=no
 +SHELL=/​bin/​bash
 +PATH=/​bin:/​usr/​bin:/​usr/​local/​bin
 +MAILDIR=/​var/​mail/​$LOGNAME/​
 +ORGMAIL=$MAILDIR/​emergency-inbox
 +DEFAULT=$MAILDIR
 +LOGFILE=$MAILDIR/​.procmail.log
 +</​code>​
 +<​note>​Pour la création initiale du maildir, vous pouvez utiliser la commande suivante :<​code>#​ maildirmake.dovecot /​var/​mail/​monUtilisateur</​code></​note>​
  
 ===== Configuration de l'​authentification SASL ===== ===== Configuration de l'​authentification SASL =====
Ligne 118: Ligne 152:
  
   * pour dire a postfix d'​utiliser saslauthd pour l'​authentification ​   * pour dire a postfix d'​utiliser saslauthd pour l'​authentification ​
-    * créer le repertoire /​etc/​postfix/​sasl avec les droits corrects :<​code>​mkdir /​etc/​postfix/​sasl ​&& ​chown root:​postfix /​etc/​postfix/​sasl</​code>​+    * créer le repertoire /​etc/​postfix/​sasl avec les droits corrects :<​code>​mkdir /​etc/​postfix/​sasl 
 +chown root:​postfix /​etc/​postfix/​sasl</​code>​
     * créer un fichier "​smtpd.conf"​ dans ce répertoire /​etc/​postfix/​sasl contenant :<​code>​     * créer un fichier "​smtpd.conf"​ dans ce répertoire /​etc/​postfix/​sasl contenant :<​code>​
 pwcheck_method:​ saslauthd pwcheck_method:​ saslauthd
Ligne 137: Ligne 172:
 Vous n'avez ensuite plus qu'a configurer votre client mail pour utiliser ce serveur SMTP en TLS. Vous n'avez ensuite plus qu'a configurer votre client mail pour utiliser ce serveur SMTP en TLS.
  
 +===== Un peu plus loin =====
 +
 +==== Eviter encore un peu les SPAMS ====
 +
 +Dans la configuration choisie, par défaut le nom de votre domaine apparait dans la banière de connexionn SMTP. Le spammeurs peuvent (en ne se gènent pas pour le faire :p ) donc vous envoyer des mails a n'​importe-quoi@cedomaine,​ qui surchargeront inutilement votre serveur.
 +
 +Une parade simple est donc de remplacer dans le fichier /​etc/​postfix/​main.cf <​code>​smtpd_banner = $myhostname ESMTP $mail_name (Debian/​GNU)</​code>​ par une valeur ne comportant pas $myhostname,​ comme par exemple :<​code>​smtpd_banner = bienvenue sur mon serveur de courrier</​code>​
 +
 +==== Scanner les mails en utilisant un antivirus et un anti spam ====
 +
 +Je vous conseille la lecture de cet (excellent :p) article : [[sysadmin:​amavis|]]
 +
 +==== Un serveur de mail compatible IPv6 ====
 +
 +Pour rendre votre serveur mail compatible IPv6, il vous faut :
 +  * disposer d'une IPv6 par exemple grace a votre FAI, voir par exemple les articles suivants : [[sysadmin:​ipv6_free|chez free]] ou [[sysadmin:​ipv6_ovh|chez OVH]]
 +  * ouvrir votre firewall (ipv6) pour laisser passer le flux SMTP (aussi bien en entrée qu'en sortie)
 +  * ajouter la ligne suivant dans votre fichier de configuration postfix /​etc/​postfix/​main.cf pour lui dire d'​ecouter en IPv4 mais aussi en IPv6 : <​code>​
 +inet_protocols = ipv4, ipv6
 +</​code>​
 +<​note>​Attention ceci n'est pas une liste par ordre de préférence,​ mais une liste tout court : le paramètre réel de préférence est [[http://​www.postfix.org/​postconf.5.html#​smtp_address_preference|smtp_address_preference]] ... mais en fait ca n'est pas une préférence non plus : on peut forcer soit ipv4, soit ipv6 mais avec une valeur à //any// postfix utilise au choix ipv4 ou ipv6 en alternance selon son humeur et l'​alignement des planètes</​note>​
 +  * adapter la directive de configuration mynetworks dans ce fichier en y ajoutant les reseaux IPv6 entre crochets, en plus des IPv4, comme par exemple :<​code>​
 +mynetworks = 127.0.0.0/8 [::1]/128, 192.168.0.0/​24 [2a01:​e32:​833f:​e2a:​2::​]/​112 192.168.1.0/​24 [2a01:​e32:​833f:​e2a:​3::​]/​112 192.168.2.0/​24 [2a01:​e32:​833f:​e2a:​4::​]/​112 192.168.3.0/​24
 +</​code>​
 +<note important>​Attention à ne rajouter ici que vos réseaux **internes** ipv6, vous n'en avez donc peut être aucun à rajouter en dehors du réseau loopback [::​1]/​128</​note>​
 +  * redémarrer votre serveur postfix pour prendre en compte ces changements : <​code>​
 +# /​etc/​init.d/​postfix restart</​code>​Vous pouvez vérifier que postfix ecoute bien en IPv6 aussi maintenant, comme par exemple avec la commande suivante (présence de la ligne tcp6) :<​code>​
 +# netstat -tulpen | grep master  ​
 +tcp        0      0 0.0.0.0:​25 ​             0.0.0.0:​* ​              ​LISTEN ​     0          4479144 ​    ​1552/​master ​    
 +tcp6       ​0 ​     0 :::25                   :::​* ​                   LISTEN ​     0          4479146 ​    ​1552/​master ​    
 +</​code>​
 +  * déclarer un enregistrement DNS AAAA pointant sur l'IPv6 de votre serveur MX en plus de l'​enregistrement A qui devrait déja exister dans votre zone, vous aurez ainsi dans votre zone DNS quelque chose ressemblant à : <​code>​
 +; MX servers
 +@               ​IN ​     MX      10      mail.mondomaine.com. ​ ; Serveur primaire de mail
 +
 +mail            A       ​40.51.254.42 ​          ; pour IPv4
 +                AAAA    2a01:​e32:​833f:​e2a::​2 ​  ; pour IPv6
 +</​code>​
 +<​note>​Il faut bien sur adapter ces adresses pour mettre les vôtres</​note>​
 +
 +===== Toujours un peu plus loin : contourner le blocage du port 25 chez tout plein de FAI =====
 +
 +Pour lutter contre le spam plein de FAI ont l'​extreme bonne idée de bloquer le port 25 en sortie depuis leur réseau vers les autres.
 +C'est une bonne idée qui ne vous permet plus en revanche d'​utiliser votre serveur de mail pour envoyer des mails depuis votre thunderbird fétiche lorsque vous vous déplacez ;).
 +
 +Du coup on va utiliser le port "​submission"​ (587) sur lequel on va exiger une authentification pour nous permettre d'​envoyer nos mails.
 +
 +Cette configuration s'​effectue dans le fichier /​etc/​postfix/​main.cf : décommenter/​ajouter les lignes suivantes :<​code>​
 +submission inet n       ​- ​      ​- ​      ​- ​      ​- ​      smtpd
 +  -o smtpd_tls_security_level=encrypt
 +  -o smtpd_sasl_auth_enable=yes
 +  -o smtpd_client_restrictions=permit_sasl_authenticated,​reject
 +  -o milter_macro_daemon_name=ORIGINATING
 +  -o syslog_name=postfix/​submission
 +</​code>​
 +<​note>​On voit que l'on passe certaines options comme exiger l’authentification mais aussi un syslog_name explicite pour clarifier les logs</​note>​
 +
 +Il ne reste plus ensuite qu'à redémarrer postfix : <​code>#​ /​etc/​init.d/​postfix restart</​code>​
 +On eut ensuite vérifier qu'il écoute bien sur le port 587 avec netstat, ce qui devrait vous donner un résultat similaire à :<​code>​
 +# netstat -tulpen | grep master
 +tcp        0      0 127.0.0.1:​10025 ​        ​0.0.0.0:​* ​              ​LISTEN ​     0          179608558 ​  ​28748/​master ​   ​
 +tcp        0      0 0.0.0.0:​587 ​            ​0.0.0.0:​* ​              ​LISTEN ​     0          179608461 ​  ​28748/​master ​   ​
 +tcp        0      0 0.0.0.0:​25 ​             0.0.0.0:​* ​              ​LISTEN ​     0          179608453 ​  ​28748/​master ​   ​
 +tcp6       ​0 ​     0 :::​587 ​                 :::*                    LISTEN ​     0          179608463 ​  ​28748/​master ​   ​
 +tcp6       ​0 ​     0 :::25                   :::​* ​                   LISTEN ​     0          179608455 ​  ​28748/​master ​   ​
 +</​code>​
 +
 +Une fois votre firewall troué sur ce port 587, vous devriez être capable modulo une configuration de votre client mail (changer le port 25 que vous deviez avoir par ce nouveau port 587 concernant le SMTP sortant) d'​envoyer des mails depuis n'​importe quel FAI
 +
 +===== Références =====
 +  * http://​fr.wikipedia.org/​wiki/​Simple_Mail_Transfer_Protocol
 +  * http://​postfix.1071664.n5.nabble.com/​smtp-address-preference-td50985.html
sysadmin/install_postfix_sasl.1259955978.txt.gz · Dernière modification: 2009/12/04 20:46 par james
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0