Postfix
De Wiki de Nelly & Richard.
Sommaire |
Postfix
- Bon, cette fois-ci on s'attaque à postfix, relativement simple à installer et configurer.
Installation
$ sudo apt-get install postfix
Configuration
- On travaillera essentiellement sur le fichier /etc/postfix/main.cf mais aussi brièvement avec le fichier master.cf situé au même endroit.
Minimaliste
# fichier /etc/postfix/main.cf myorigin = /etc/mailname smtpd_banner = $myhostname ESMTP biff = no append_dot_mydomain = no delay_warning_time = 4h alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mydestination = localhost, domaine1.com, domaine2.com, .... # il est important de déclarer myhostname APRÈS mydestination (erreur dans les logs : mail loops back to myself) myhostname = hostname # smarthost : relayhost = smtp.fai.com mynetworks = 127.0.0.0/8, 192.168.0.0/16, ... mailbox_command = procmail -a "$EXTENSION" mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all
Authentification SASL
- L'authentificatin SASL seule avec le mécanisme plain login se négocie en clair il est donc nécessaire de l'encapsuler avec TLS
à moins que votre serveur mail, imap et web (dans le cadre d'une utilisation avec un webmail) soit hébergé sur la même machine.
- fichiers
- /etc/postfix/master.cf
- /etc/postfix/main.cf
- /etc/postfix/sasl/smtpd.conf
- /etc/dovecot/dovecot.conf
Configuration
- /etc/postfix/master.cf
# port 465 smtps inet n - - - - smtpd -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject
- /etc/postfix/main.cf
# SASL parameters smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = toto.com smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth
- /etc/dovecot/dovecot.conf
# modifier votre fichier suivant vos besoins # certaines info étant déjà déclarées dans le fichier auth default { mechanisms = plain login passdb pam { } userdb passwd { } socket listen { client { path = /var/spool/postfix/private/auth mode = 0660 user = postfix group = postfix } } }
SSL wrappermode
- fichiers
- /etc/postfix/master.cf
- /etc/postfix/main.cf
- /etc/postfix/master.cf
# port 465 smtps inet n - - - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject
- /etc/postfix/main.cf
smtpd_use_tls=yes #smtpd_enforce_tls = yes smtpd_tls_auth_only = yes smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.pem smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.key smtpd_tls_loglevel = 2 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s smtpd_tls_ask_ccert = yes smtpd_tls_req_ccert = no smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache tls_random_source = dev:/dev/urandom smtp_use_tls = yes smtp_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key smtp_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
STARTTLS
- Peu de webmail supporte STARTTLS :
Certificat
- Créez vous un compte sur le site de CAcert
- Enregistrez-y votre/vos domaine(s)
- Installer le paquet ca-certificates (contenant les différents certificats d'autorités nécessaires)
$ sudo apt-get install ca-certificates
- On génère nos paire de certificat/clé :
$ sudo openssl genrsa -out host.key 2048 $ sudo openssl req -new -key host.key -out host.csr
- on copie/colle le host.csr sur le site de CAcert
- on récupère le résultat dans le fichier certificat.crt
- on teste :
$ sudo openssl verify certificat.crt certificat.crt: OK
Configuration
- fichiers
- /etc/postfix/master.cf
- /etc/postfix/main.cf
- /etc/postfix/master.cf
# port 587 submission inet n - - - - smtpd -o smtpd_enforce_tls=yes
- /etc/postfix/main.cf
# STARTTLS parameters smtpd_use_tls=yes #smtpd_enforce_tls = yes smtpd_tls_auth_only = yes # déclaration des clé, certicat, et certificat d'autorité smtpd_tls_key_file=/etc/postfix/certs/key_file.key smtpd_tls_cert_file=/etc/postfix/certs/certificat.crt smtpd_tls_CAfile=/etc/ssl/certs/ca-certificates.crt # log level smtpd_tls_loglevel = 2 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s smtpd_tls_ask_ccert = yes smtpd_tls_req_ccert = no smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache tls_random_source = dev:/dev/urandom smtp_use_tls = yes smtp_tls_note_starttls_offer = yes # déclaration des clé, certicat, côté client smtp_tls_key_file = /etc/postfix/certs/key_file.key smtp_tls_cert_file = /etc/postfix/certs/certificat.crt smtp_tls_CAfile=/etc/ssl/certs/ca-certificates.crt smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
Source
Postfix TLS with free CAcert.org certificates
Règles
- Pour le moment je fais que poser le contenu d'une machine standard :
# filtrage smtpd_client_restrictions = permit_mynetworks, reject_unauth_pipelining, reject_unknown_reverse_client_hostname, reject_rbl_client sbl-xbl.spamhaus.org, reject_rbl_client list.dsbl.org, reject_rbl_client dnsbl.njabl.org smtpd_helo_required = yes smtpd_helo_restrictions = permit_mynetworks, reject_invalid_helo_hostname, reject_non_fqdn_helo_hostname smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated, permit_tls_clientcerts, reject_unauth_pipelining, reject_non_fqdn_sender, reject_unknown_sender_domain, permit smtpd_recipient_restrictions = permit_mynetworks, permit_tls_clientcerts, permit_sasl_authenticated, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unauth_pipelining, reject_unknown_recipient_domain, reject_invalid_hostname, reject_unlisted_recipient, reject_unlisted_sender, reject_unauth_destination, reject_rbl_client zen.spamhaus.org, permit
Réécriture/modification du message
- Il vous est parfois nécessaire de réécrire vos en-têtes pour éviter de laisser trop de "traces" sur vos actifs et/ou vos machines.
- Le paquet postfix-pcre est fait pour ceci.
$ sudo apt-get install postfix-pcre
- Réécriture de l'en-tête par exemple :
# ajout de la ligne qui suit au fichier /etc/postfix/main.cf $ sudo postconf -e "header_checks = pcre:/etc/postfix/header_checks" $ sudo /etc/init.d/postfix force-reload
- Il vous faut créer le fichier /etc/postfix/header_checks
# exemple de réécriture des headers /10\.0\.0\.25/ IGNORE
- Votre en-tête du type sera supprimée :
Received: from 10.0.0.25 by siteweb.titi.com with HTTP; Mon, 10 Nov 2008 11:52:47 +0100 (CET)
- La page de man vous en dira plus suivant vos besoins : PCRE_TABLE(5)
Problèmes
Mails à destination de hotmail.fr & Cie
- Si vos mails à destination de hotmail.fr, hotmail.com, msn.com, ... n'aboutissent pas ou atterissent dans les courriers indésirables
- Renseigner le champs SPF de votre DNS en vérifiant sa syntaxe sur le site openspf ou plus précisément ici et là, si ce n'est pas déjà fait.
- Rendez-vous sur sender ID afin de vous faire accepter par Microsoft
mail loops back to myself
- Vérifier vos variables myhostname et mydestination
- Il est important de déclarer myhostname APRÈS mydestination dans main.cf (erreur dans les logs : mail loops back to myself)