Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
email [2012/12/07 18:15] nicolas Restriction de l'adresse d'envoi sur l'enveloppe |
email [2019/04/18 14:46] (Version actuelle) mart |
||
---|---|---|---|
Ligne 65: | Ligne 65: | ||
Le fichier de config principal est ''/etc/postfix/main.cf'' | Le fichier de config principal est ''/etc/postfix/main.cf'' | ||
- | Voici un exemple de fichier fonctionnant, a adapter selon vos besoin. | + | Voici les options importantes (ou à modifier) par rapport au fichier par défaut |
<code> | <code> | ||
- | smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) | + | # Les domaines depuis lesquels on va recevoir des mails |
- | biff = no | + | virtual_mailbox_domains = example.com, domain.net, monsite.org |
- | append_dot_mydomain = no | + | # Dossier de base de stockage des mails |
- | readme_directory = no | + | virtual_mailbox_base = /home/vmail |
- | + | # C'est là qu'on va stocker la liste des emails | |
- | # TLS parameters | + | virtual_mailbox_maps = hash:/etc/postfix/vmaps |
- | smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt | + | virtual_minimum_uid = 100 |
- | smtpd_tls_key_file = /etc/ssl/private/smtpd.key | + | # UID du user et group vmail |
- | smtpd_use_tls=yes | + | virtual_uid_maps = static:5000 |
- | smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache | + | virtual_gid_maps = static:5000 |
- | smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache | + | virtual_alias_maps = hash:/etc/postfix/virtual |
- | smtp_tls_security_level = may | + | # 5GB de taille max des boites virtuelles |
- | smtpd_tls_security_level = may | + | virtual_mailbox_limit = 5368709120 |
- | smtpd_tls_auth_only = no | + | |
- | smtp_tls_note_starttls_offer = yes | + | |
- | smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem | + | |
- | smtpd_tls_loglevel = 1 | + | |
- | smtpd_tls_received_header = yes | + | |
- | smtpd_tls_session_cache_timeout = 3600s | + | |
- | tls_random_source = dev:/dev/urandom | + | |
- | # remplacer par votre FQDN (hostname --long) | ||
- | myhostname = example.com | ||
- | mydomain = localhost | ||
- | alias_maps = hash:/etc/aliases | ||
- | alias_database = hash:/etc/aliases | ||
- | # Verifiez que /etc/mailname contient le résultat de "hostname --long" | ||
- | myorigin = /etc/mailname | ||
- | # on va utiliser des virtual_mailbox_domains donc pas de domaine ici | ||
- | mydestination = localhost | ||
- | relayhost = | ||
# la liste des ip depuis lesquelles on peut accéder au serveur smtp | # la liste des ip depuis lesquelles on peut accéder au serveur smtp | ||
# on commente car on va utiliser SASL-auth pour contrôler | # on commente car on va utiliser SASL-auth pour contrôler | ||
# mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 | # mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 | ||
+ | |||
# 5GB de mailbox max | # 5GB de mailbox max | ||
mailbox_size_limit = 5368709120 | mailbox_size_limit = 5368709120 | ||
+ | |||
+ | # faire du dot addressing | ||
recipient_delimiter = + | recipient_delimiter = + | ||
- | inet_interfaces = all | + | |
- | inet_protocols = all | + | # 50MB de piece jointe max, on est plus en 2000 |
- | home_mailbox = Maildir/ | + | |
- | # 50MB de piece jointe max | + | |
message_size_limit = 52428800 | message_size_limit = 52428800 | ||
Ligne 119: | Ligne 103: | ||
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination | smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination | ||
smtpd_client_restrictions = permit_sasl_authenticated,sleep 1,reject_unauth_pipelining | smtpd_client_restrictions = permit_sasl_authenticated,sleep 1,reject_unauth_pipelining | ||
+ | |||
+ | # Ajoute une ligne désignant l'utilisateur authentifié dans le header.A décommenter pour lutter contre les emails forgés. | ||
+ | #smtpd_sasl_authenticated_header = yes | ||
# Table d'autorisation d'adresse mail par login SASL | # Table d'autorisation d'adresse mail par login SASL | ||
smtpd_sender_login_maps = hash:/etc/postfix/sender_login | smtpd_sender_login_maps = hash:/etc/postfix/sender_login | ||
- | |||
- | |||
- | # Virtual | ||
- | # Les domaines depuis lesquels on va recevoir des mails | ||
- | virtual_mailbox_domains = example.com, domain.net, monsite.org | ||
- | # Dossier de base de stockage des mails | ||
- | virtual_mailbox_base = /home/vmail | ||
- | # C'est là qu'on va stocker la liste des emails | ||
- | virtual_mailbox_maps = hash:/etc/postfix/vmaps | ||
- | virtual_minimum_uid = 100 | ||
- | # UID du user et group vmail | ||
- | virtual_uid_maps = static:5000 | ||
- | virtual_gid_maps = static:5000 | ||
- | virtual_alias_maps = hash:/etc/postfix/virtual | ||
- | # 5GB de taille max des boites virtuelles | ||
- | virtual_mailbox_limit = 5368709120 | ||
# pour refuser les adresses non définies | # pour refuser les adresses non définies | ||
local_transport = virtual | local_transport = virtual | ||
local_recipient_maps = $virtual_mailbox_maps | local_recipient_maps = $virtual_mailbox_maps | ||
+ | |||
+ | # Trick IPv6 pour résoudre le problème de "address not listed for hostname" | ||
+ | import_environment = MAIL_CONFIG MAIL_DEBUG MAIL_LOGTAG TZ XAUTHORITY DISPLAY LANG=C RESOLV_MULTI=on | ||
</code> | </code> | ||
Ligne 183: | Ligne 157: | ||
postmaster@example.com bob+postmaster@example.com</code> | postmaster@example.com bob+postmaster@example.com</code> | ||
- | Pour que tout les mails de Bob reçu à la première adresse soit reçu par la deuxième (ça fonctionne aussi pour les adresses sur des domaines externes. Notez que selon la [[https://tools.ietf.org/html/rfc5321#section-4.5.1|RFC5321]] demande d'avoir une adresse ''postmaster@'' existante pour chaque domaine. Ce fichier est un bon endroit pour faire les redirections nécessaires. | + | Pour que tout les mails de Bob reçu à la première adresse soit reçu par la deuxième (ça fonctionne aussi pour les adresses sur des domaines externes. Notez que selon la [[https://tools.ietf.org/html/rfc5321#section-4.5.1|RFC5321]] demande d'avoir une adresse ''postmaster@'' existante pour chaque domaine. |
Pour générer la base de donnée de vmaps et virtual. | Pour générer la base de donnée de vmaps et virtual. | ||
Ligne 192: | Ligne 166: | ||
Et on redémarre le serveur ! | Et on redémarre le serveur ! | ||
- | <code>/etc/init.d/postfix restart</code> | + | <code>systemctl restart postfix</code> |
+ | |||
+ | === Astuce anti-spam === | ||
+ | |||
+ | Via le fichier ''virtual'', vous pouvez facilement créer des alias et faire votre service d'email jetables. En vous inscrivant sur un site suspect, ajoutez une ligne ''nom-site-suspect@example.com compte-principal+nom-site=suspect@example.com'' et régénérez le fichier via ''postmap''. Tous les emails seront delivres a votre adresse principale et vous pourrez facilement identifier la source de spam et la supprimer en enlevant la ligne ou la redirigeant vers un autre compte. | ||
==== Test SMTP ==== | ==== Test SMTP ==== | ||
Ligne 230: | Ligne 208: | ||
Si vous testez de vous connecter depuis l'extérieur, vous aurez besoin de vous authentifier. Configurez d'abord Dovecot (suite du tutoriel). Un exemple de communication SMTP avec authentification est donné [[http://gerardnico.com/wiki/smtp_telnet|ici]]. | Si vous testez de vous connecter depuis l'extérieur, vous aurez besoin de vous authentifier. Configurez d'abord Dovecot (suite du tutoriel). Un exemple de communication SMTP avec authentification est donné [[http://gerardnico.com/wiki/smtp_telnet|ici]]. | ||
==== Maildrop ==== | ==== Maildrop ==== | ||
+ | |||
+ | //TODO remplacer cette section par sieve// | ||
Cette section est **optionnelle**. Le serveur mail fonctionnera très bien si vous laissez Postfix gérer la réception des mails. Seulement, si l'on veut appliquer des filtres, SpamAssassin et autres, l'utilisation de maildrop peut être utile. Si vous utilisez maildrop, le contenu du fichier ''/etc/postfix/vmaps'' change de rôle. Il est nécessaire de continuer à lister chaque adresse email présente dans ce fichier (sinon les mail reçu seront rejetés) mais la seconde partie de la ligne (le dossier de destination), n'a plus d'importance. | Cette section est **optionnelle**. Le serveur mail fonctionnera très bien si vous laissez Postfix gérer la réception des mails. Seulement, si l'on veut appliquer des filtres, SpamAssassin et autres, l'utilisation de maildrop peut être utile. Si vous utilisez maildrop, le contenu du fichier ''/etc/postfix/vmaps'' change de rôle. Il est nécessaire de continuer à lister chaque adresse email présente dans ce fichier (sinon les mail reçu seront rejetés) mais la seconde partie de la ligne (le dossier de destination), n'a plus d'importance. | ||
Ligne 254: | Ligne 234: | ||
<code>DEFAULT="/home/vmail/$1/$2"</code> | <code>DEFAULT="/home/vmail/$1/$2"</code> | ||
- | Le [[http://en.gentoo-wiki.com/wiki/Maildrop#Configuration|wiki de Gentoo]] donne plusieurs exemples de règles de filtrage que l'on peut mettre. Voici par exemple, une que j'utilise pour rediriger les mails venant d'une instance StatusNet dans le sous dossier StatusNet et une autre pour rediriger sur base de l'adresse de la personne qui envoie. | + | Le [[http://en.gentoo-wiki.com/wiki/Maildrop#Configuration|wiki de Gentoo]] (down ? [[http://web.archive.org/web/20130404224643/http://en.gentoo-wiki.com/wiki/Maildrop|archive]]) donne plusieurs exemples de règles de filtrage que l'on peut mettre. Voici par exemple, une que j'utilise pour rediriger les mails venant d'une instance StatusNet dans le sous dossier StatusNet et une autre pour rediriger sur base de l'adresse de la personne qui envoie. |
<code># Redirect to statusnet subdomain | <code># Redirect to statusnet subdomain | ||
Ligne 349: | Ligne 329: | ||
args = /etc/dovecot/users | args = /etc/dovecot/users | ||
} | } | ||
+ | |||
+ | ## /etc/dovecot/10-auth.conf | ||
+ | !include auth-passwdfile.conf.ext | ||
+ | |||
+ | ## /etc/dovecot/conf.d/auth-passwdfile.conf.ext | ||
+ | passdb { | ||
+ | driver = passwd-file | ||
+ | args = scheme=CRAM-MD5 username_format=%u /etc/dovecot/passwd | ||
+ | } | ||
+ | |||
</code> | </code> | ||
+ | ==== Multidomaine et SSL ==== | ||
+ | |||
+ | Si vous avez plusieurs domaines email, il y a des chances que vous ayez également plusieurs certificats SSL. Si vous voulez éviter les grosses alertes de sécurité lorsque vous accédez à vos emails, vous pouvez modifier la configuration Dovecot pour utiliser des certificats en fonction du domaine. | ||
+ | |||
+ | <code> | ||
+ | ssl_cert = </etc/ssl/certs/certificat_global.pem | ||
+ | ssl_key = </etc/ssl/certs/clef_global.key | ||
+ | ... | ||
+ | local_name imap.domaine1.org { | ||
+ | ssl_cert = </etc/ssl/certs/imap.domaine1.org.pem | ||
+ | ssl_key = </etc/ssl/private/imap.domaine1.org.key | ||
+ | } | ||
+ | local_name imap.domaine2.org { | ||
+ | ssl_cert = </etc/ssl/certs/imap.domaine2.crt | ||
+ | ssl_key = </etc/ssl/private/imap.domaine2.key | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | Et pour vérifier que le bon certificat est bien sélectionné: ''openssl s_client -connect imap.domaine2.org:993 -servername imap.domaine2.org''. | ||
+ | |||
+ | Attention que le filtre est fait sur le //TLS SNI (Server Name Indication)//, une fonctionnalité que tous les clients mail n'implémentent pas. Thunderbird le fait, pas K9 mail (Android) par exemple. Dans le cas d'un client qui ne l'implémente pas, vous retomberez sur le certificat global. Il suffit de retirer le ''-servername imap.domaine2.org'' dans la commande openssl pour voir le résultat. | ||
==== Création d'utilisateur ==== | ==== Création d'utilisateur ==== | ||
Ligne 489: | Ligne 500: | ||
Et on redémarre ! | Et on redémarre ! | ||
- | <code>/etc/init.d/dovecot restart</code> | + | <code>systemcl restart dovecot</code> |
===== Score de spam ===== | ===== Score de spam ===== | ||
Ligne 513: | Ligne 524: | ||
Si vous possédez comme moi plusieurs domaines pointant sur la même IP, sachez qu’il est inutile de mettre plusieurs entrées DNS PTR, cela pourrait être même contre productif ([[http://serverfault.com/a/66060/61652|source]]). | Si vous possédez comme moi plusieurs domaines pointant sur la même IP, sachez qu’il est inutile de mettre plusieurs entrées DNS PTR, cela pourrait être même contre productif ([[http://serverfault.com/a/66060/61652|source]]). | ||
+ | |||
+ | Si votre serveur de mail est amené à utiliser de l'IPv6 il faut aussi mettre à jour de reverse DNS de la ou des adresse(s) IPv6. | ||
==== SPF ==== | ==== SPF ==== | ||
Ligne 703: | Ligne 716: | ||
add_header spam Waw c'est du spam _STARS(*)_ ca</code> | add_header spam Waw c'est du spam _STARS(*)_ ca</code> | ||
+ | ==== fail2ban ==== | ||
+ | |||
+ | Installer le package **fail2ban** et activer dans ''/etc/fail2ban/jail.conf'' les regles ''postfix'', ''dovecot'' et ''sasl''. | ||
===== Autre ===== | ===== Autre ===== | ||
+ | ==== plus-addressing ==== | ||
+ | |||
+ | Une fonctionnalité intéressante dans Gmail est le "plus-addressing", le fait de pouvoir créer une infinité d'adresse email de type nom+alias@serveur.com. Dans postfix, c'est facilement reproductible (sans doute même activé par défaut il me semble). | ||
+ | |||
+ | Dans le fichier ''/etc/postfix/main.cf'', chercher la ligne suivante (l'ajouter si inexistante) | ||
+ | |||
+ | <code>recipient_delimiter = +</code> | ||
+ | |||
+ | Cela spécifie que le symbole + sera considéré comme délimiteur. Si vous changez le "+" par ".", "_" ou autre, il deviendra le nouveau délimiteur. Cela vous permet donc de crever des adresses de type nom.alias@serveur.com a la place. Certains formulaires refusant les + ou les retirant automatiquement, vous servez ainsi paré (évidement ne fonctionne pas si votre adresse est prenom.nom@serveur.com). | ||
==== Prolongements ==== | ==== Prolongements ==== | ||
La page [[fonction_mail_php|msmtp]] explique comment envoyer des mails en ligne de commande et avec PHP après avoir configuré ce serveur mail. | La page [[fonction_mail_php|msmtp]] explique comment envoyer des mails en ligne de commande et avec PHP après avoir configuré ce serveur mail. | ||
Ligne 711: | Ligne 736: | ||
==== Liens utiles ==== | ==== Liens utiles ==== | ||
[[http://www.emailsecuritygrader.com/|Email Security Grader]] permet de tester son serveur mail. Fait la vérification de SPF, reverse DNS, quelques points de sécurité... Pratique pour s'assurer qu'on a rien oublié. Si vous suivez l'ensemble de ce tuto, vous devriez décrocher le rang de "VERY STRONG SECURITY", pas mal hein ;-) | [[http://www.emailsecuritygrader.com/|Email Security Grader]] permet de tester son serveur mail. Fait la vérification de SPF, reverse DNS, quelques points de sécurité... Pratique pour s'assurer qu'on a rien oublié. Si vous suivez l'ensemble de ce tuto, vous devriez décrocher le rang de "VERY STRONG SECURITY", pas mal hein ;-) | ||
+ | |||
+ | [[http://www.checktls.com|CheckTLS]] permet de tester la connexion sécurisée de votre serveur de mail en testant la validité de votre certificat et permet la visualisation complète du déroulement du protocole SMTP. |