wiki/HowtoPostfix.md

643 lines
24 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
categories: mail
title: Howto Postfix
...
* Documentation : <http://www.postfix.org/documentation.html>
* Rôle Ansible : <https://forge.evolix.org/projects/ansible-roles/repository/show/postfix>
[Postfix](http://www.postfix.org/) est serveur [SMTP](HowtoSMTP) libre et populaire sous GNU/Linux et BSD. Il a été développé en 1999 par [Wietse Venema](http://www.porcupine.org/wietse/) comme une alternative plus facile à administrer et plus sécurisée que l'historique _Sendmail_.
## Installation
~~~
# apt install postfix
# postconf -d | grep ^mail_version
mail_version = 2.11.3
~~~
## Configuration
Postfix s'appuie principalement sur le fichier `/etc/postfix/master.cf` (configuration des process de Postfix) et le fichier `/etc/postfix/main.cf` (configuration des options).
L'utilitaire **postconf** permet de lister/vérifier les options du `main.cf`.
~~~
## Lister les options par défaut
# postconf -d
## Lister les options actuelles
# postconf
## Lister les options modifiées par rapport au défaut
# postconf -n
## Manpage très détaillée sur toutes les options disponibles
# man 5 postconf
~~~
### Configuration minimale
Pour une configuration minimale, nous conseillons d'avoir le fichier
`main.cf` suivant en ajustant le paramètre _myhostname_ avec un
enregistrement DNS existant pointant vers le serveur concerné :
~~~
smtpd_banner = $myhostname ESMTP mail server
biff = no
append_dot_mydomain = no
myhostname = hosting.example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = $myhostname
mydestination = $myhostname localhost.localdomain localhost
relayhost =
mynetworks = 127.0.0.0/8
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv4
disable_vrfy_command = yes
~~~
### Configuration minimale pour serveur web
Un serveur web va souvent envoyer des emails, et notamment vers des fournisseurs d'accès connus (gmail.com, orange.fr, etc.). On conseille donc d'ajouter les options suivantes dans `main.cf` pour gérer le rythme d'envoi :
~~~
#delay_warning_time = 4h
minimal_backoff_time = 2h
maximal_backoff_time = 6h
maximal_queue_lifetime = 4d
queue_run_delay = 100s
bounce_queue_lifetime = 1d
initial_destination_concurrency = 5
default_destination_concurrency_limit = 20
slow_destination_rate_delay = 0
slow_destination_concurrency_limit = 1
slow_destination_concurrency_failed_cohort_limit = 100
slow_destination_recipient_limit = 25
transport_maps = hash:$config_directory/transport
~~~
et on ajoute la ligne suivante dans `master.cf` :
~~~
slow unix - - n - - smtp -o syslog_name=postfix-slow
~~~
Il faut également créer le fichier `/etc/postfix/transport` et indiquer des domaines vers lesquels le rythme d'envoi sera plus lent (à cause de restrictions de leur côté) :
~~~
orange.fr slow:
wanadoo.fr slow:
voila.fr slow:
laposte.net slow:
~~~
On fera ensuite :
~~~
# postmap /etc/postfix/transport
# systemctl restart postfix
~~~
On peut ensuite vérifier que la configuration est bien prise en compte en regardant dans les logs de Postfix. On doit pouvoir observer des processus « postfix-slow » pour tous les domaines concernés.
### Configuration avancée pour serveur de messagerie
Voir HowtoMail/Postfix
### SSL/TLS
<http://www.postfix.org/TLS_README.html>
#### Activation SSL/TLS au niveau serveur SMTP (smtpd)
Activer SSL/TLS au niveau serveur SMTP permet la réception d'emails depuis des clients SMTP capables d'envoyer en SSL/TLS.
Il faut générer une clé privée et un certificat, voir [HowtoSSL]().
On peut ensuite activer via le fichier `/etc/postfix/main.cf` :
~~~
smtpd_tls_security_level = may
smtpd_tls_mandatory_protocols=!SSLv2,!SSLv3
smtpd_tls_protocols=!SSLv2,!SSLv3
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_tls_loglevel = 1
smtpd_tls_key_file = /etc/ssl/private/smtp.example.com.key
smtpd_tls_cert_file = /etc/ssl/certs/smtp.example.com.crt
smtpd_tls_CAfile = /etc/ssl/certs/GandiStandardSSLCA2.pem
~~~
> *Note 1* : la désactivation des protocoles SSLv2 et SSLv3 est désormais par défaut, mais on préfère garder cette option
> *Note 2* : Pour Debian 7 et 8, on conseille d'ajouter également :
>
>~~~
>smtpd_tls_mandatory_exclude_ciphers = ECDHE-RSA-RC4-SHA, RC4, aNULL
>smtpd_tls_exclude_ciphers = ECDHE-RSA-RC4-SHA, RC4, aNULL
>smtpd_tls_mandatory_ciphers = medium
>~~~
Pour l'envoi d'emails depuis des clients SMTP authentifiés (*smtpd_sasl_auth_enable=yes*), on active en général le port TCP/587 (appelé _SMTP Submission_) qui n'accepte que des connexions chiffrées (*smtpd_tls_security_level=encrypt*) et le port TCP/465 (appelé _SMTPS_) qui n'accepte que des connexions SMTP over TLS (*smtpd_tls_wrappermode=yes*). Ces activations se font en décommentant les lignes appropriées dans `/etc/postfix/master.cf`.
On peut ensuite vérifier lactivation de SSL/TLS au niveau serveur en obtenant le message `STARTTLS` dans une session SMTP :
~~~
$ telnet bugs.debian.org 25
Trying 209.87.16.39...
Connected to bugs.debian.org.
Escape character is '^]'.
220 buxtehude.debian.org
EHLO example.com
250-buxtehude.debian.org Hello example.com [80.12.63.254]
250-SIZE 104857600
250-8BITMIME
250-STARTTLS
250 HELP
QUIT
221 buxtehude.debian.org closing connection
Connection closed by foreign host.
~~~
On peut également utiliser une connexion chiffrée avec un serveur SMTP via la commande :
~~~
$ openssl s_client -CApath /etc/ssl/certs -connect smtp.example.com:25 -crlf -starttls smtp
~~~
#### Activation SSL/TLS au niveau client SMTP (smtp)
Activer SSL/TLS au niveau client SMTP permet d'envoyer des emails vers des serveurs SMTP capables de recevoir en SSL/TLS.
On active cela via le fichier `/etc/postfix/main.cf` :
~~~
smtp_tls_security_level = may
smtp_tls_mandatory_protocols=!SSLv2,!SSLv3
smtp_tls_protocols=!SSLv2,!SSLv3
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_tls_loglevel = 1
~~~
> *Note* : la désactivation des protocoles SSLv2 et SSLv3 est désormais par défaut, mais on préfère garder cette option
## Administration
### Logs
Postfix envoie une trace de ses actions à _Syslog_ avec la facility *LOG_MAIL*. On retrouve donc les fichiers de journalisation définis dans le fichier `/etc/rsyslog.conf` :
~~~
mail.* -/var/log/mail.log
mail.info -/var/log/mail.info
mail.warn -/var/log/mail.warn
mail.err /var/log/mail.err
~~~
*Note* : ce sont les adresses email d'enveloppe affichées dans les logs Postfix
L'indication **delays=a/b/c/d** dans les logs est utile pour avoir des informations sur le temps d'envoi d'un mail :
~~~
a=time before queue manager, including message transmission;
b=time in queue manager;
c=connection setup time including DNS, HELO and TLS;
d=message transmission time.
~~~
### File d'attente
Postfix utilise différentes files d'attente (ou queues). Les files d'attente principales sont _incoming_, _active_ et _deferred_ :
~~~
incoming : première étape pour tous les nouveaux messages (après un passage par cleanup)
active : messages en cours de livraison (provenant principalement d'incoming ou deferred)
deferred : messages non délivrés lors du premier essai
~~~
Il existe aussi d'autres files d'attente, qui servent beaucoup moins fréquemment : _corrupt_ (messages invalides) et _hold_ (messages mis de côté).
Ces files d'attente sont des répertoires situés dans `/var/spool/postfix`dans lesquels chaque message est stocké dans un fichier (sur une seule ligne), avec une arborescence de 16 répertoires (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F) pour optimiser lorsqu'un grand nombre de messages est dans une file d'attente. On peut gérer ces files d'attente grâce à des commandes d'administration.
`mailq` (ou `sendmail -bp`) liste toutes les files d'attente. Cela nous donne pour chaque message :
* Queue ID
* Taille du message
* Date d'arrivée dans la file d'attente
* Expéditeur
* Éventuelle raison de non-livraison (entre parenthèses)
* Destinataires(s)
Voici dans quel ordre sont listés les messages :
* Messages de la queue _active_ (une étoile figure à côté du Queue ID)
* Messages de la queue _deferred_
* Messages de la queue _hold_ (un point d'exclamation figure à côté du queue ID)
Exemples pratiques :
~~~
## Afficher le contenu d'un message
# postcat -vq <queue_id>
## Copier un message dans un fichier
# postcat -vq <queue_id> > themessage.txt
## Supprimer un message (ou tous) des files d'attente
# postsuper -d <queue_id>
# postsuper -d ALL
## Supprimer tous les messages de la queue deferred
# postsuper -d ALL deferred
## Placer en « hold » un message (ou tous)
# postsuper -h <queue_id>
# postsuper -h ALL
## Placer en « hold » tous les messages de la queue deferred
# postsuper -h ALL deferred
## Libérer un message (ou tous) en « hold »
# postsuper -H <queue_id>
# postsuper -H ALL
# Refaire passer un message (ou tous) par les process de livraison
# postsuper -r <queue_id>
# postsuper -r ALL
## Purger des fichiers temporaires (en cas de crash par exemple)
# postsuper -p
## Réparer/vérifier l'arborescence des files d'attente
# postsuper -s
~~~
On pourra utiliser ces commandes sur des ensembles de messages via des scripts du type :
~~~
# mailq | tail -n +2 | awk 'BEGIN { RS = "" } /user@example\.com$/ { print $1 }' | tr -d '*!' | postsuper -h -
# mailq | tail -n +2 | awk 'BEGIN { RS = "" } /example\.com$/ { print $1 }' | tr -d '*!' | postsuper -d -
# mailq | awk '/^[0-9A-Z]+/&&/sender@example\.com$/{print $1}' | tr -d '*!' | postsuper -h -
# mailq | awk '/^[0-9A-Z]+/&&/example\.com$/{print $1}' | tr -d '*!' | postsuper -d -
# mailq > mailq.log ; for var in $(grep <from@example.com> mailq.log | cut -b '1-12'); do postsuper -d $var; done
# # Supprimer les e-mails envoyés par someone@some.where
# mailq | awk '/^[0-9A-F]+[!*]? /&&/someone@some\.where$/{gsub("[!*]", "", $1); print $1 | "postsuper -d -"}'
~~~
Obtenir la liste les senders triés par ordre croissant du nombre de-mails en attente denvoi
~~~
# mailq | awk '/^[0-9A-F]+[*!]? /{a[$NF]++}END{for(i in a)print a[i],i | "sort -n"}'
~~~
*Note* : le `BEGIN { RS = "" }` est nécessaire car la sortie de mailq peut être sur plusieurs lignes, et le `tr -d '*!'` permet de ne pas prendre les messages en « hold ».
*À savoir* : la commande `postsuper -r` est pratique dans les cas où l'on a modifié des alias ou des ré-écritures, elle va déposer les messages concerné dans la queue _maildrop_ et lui attribuer un nouveau <queue_id>. Attention, cela ne va pas provoquer un envoi immédiat car le traitement des files d'attente est différé. Si l'on veut un ré-envoi immédiat d'un message :
~~~
# postsuper -r <queue_id>
# mailq -q
~~~
/!\\ Attention, `mailq -q` (ou `sendmail -q`) réactive immédiatemment l'ensemble des messages en file d'attente, il faut donc l'utiliser avec modération, surtout sur les serveurs avec des files d'attentes chargées.
La commande **qshape** permettant par exemple de lister les messages dans la file d'attente _deffered_ :
~~~
# qshape deferred
T 5 10 20 40 80 160 320 640 1280 1280+
TOTAL 78 0 0 0 0 1 0 0 0 0 77
gmail.fr 11 0 0 0 0 0 0 0 0 0 11
homail.fr 3 0 0 0 0 0 0 0 0 0 3
yaoo.fr 2 0 0 0 0 0 0 0 0 0 2
yahou.fr 2 0 0 0 0 0 0 0 0 0 2
oange.fr 2 0 0 0 0 0 0 0 0 0 2
hotmai.fr 2 0 0 0 0 0 0 0 0 0 2
wanado.fr 2 0 0 0 0 0 0 0 0 0 2
orangr.fr 1 0 0 0 0 0 0 0 0 0 1
prange.fr 1 0 0 0 0 0 0 0 0 0 1
ornage.fr 1 0 0 0 0 0 0 0 0 0 1
~~~
Supprimer les mails correspondant à ce type de ligne :
~~~
6B28125849 3039 Fri Sep 25 07:27:53 MAILER-DAEMON
(host mx2.foo.com[1.2.3.4] said: 452 Too many incoming emails for this account (in reply to RCPT TO command))
mail.example.com
~~~
~~~
# mailq | awk '/^[0-9A-F]+/&&/MAILER-DAEMON$/{id=$1} /mail@example.com$/{print id}' | postsuper -d -
~~~
### Notifications
Postfix envoie des notifications à ajuster avec l'option `notify_classes`.
On peut ainsi ajuster cette option ainsi :
~~~
notify_classes = resource, software, bounce, 2bounce, delay
delay_notice_recipient = delay
error_notice_recipient = error
bounce_notice_recipient = bounce
2bounce_notice_recipient = 2bounce
~~~
Puis ajuster les alias via `/etc/alias` :
~~~
error: localadmin
bounce: postmaster
2bounce: postmaster
delay: alert0@example.com
~~~
/!\\ Attention, pour un serveur recevant pas mal de messages, cela peut générer pas de notifications. Si nécessaire, ajuster ainsi pour avoir un minimum d'alertes :
~~~
notify_classes = resource, software
error_notice_recipient = error
~~~
## Plomberie
Postfix est découpé en plusieurs processus (qmgr, pickup, smtp, smtpd, bounce, cleanup, error, etc.) contrôlé par un processus nommé `master`. Chaque processus est défini dans le fichier de configuration `master.cf`.
Sur un serveur inactif, vous verrez au minimum les processus suivants :
~~~
|-master,432636 -l -t unix -u
| |-qmgr,5036 -l -t unix -u-u -c
| `-pickup,9162 -l -t unix -u -c
~~~
Sur un serveur actif, vous verrez de nombreux processus, par exemple :
~~~
|-master,2576
| |-scache,13334 -l -t unix -u
| |-qmgr,22888 -l -t fifo -u
| |-anvil,22891 -l -t unix -u
| |-smtp,25261 -t unix -u
| |-smtp,26204 -t unix -u
| |-trivial-rewrite,26596 -n rewrite -t unix -u
| |-smtp,26629 -t unix -u
| |-pickup,27010 -l -t fifo -u
| |-smtp,27102 -t unix -u
| |-smtp,27976 -t unix -u
| |-proxymap,28383 -t unix -u
| |-smtp,29967 -t unix -u
| |-smtp,29968 -t unix -u
| |-smtp,29969 -t unix -u
| |-bounce,29970 -z -t unix -u
| |-bounce,30351 -z -n defer -t unix -u
| |-bounce,30352 -z -n defer -t unix -u
| |-bounce,30354 -z -n defer -t unix -u
| |-bounce,30355 -z -n defer -t unix -u
| |-cleanup,30364 -z -t unix -u
| |-cleanup,30365 -z -t unix -u
| |-smtpd,30366 -n smtp -t inet -u -o stress= -s 2
| |-error,30367 -n retry -t unix -u
| |-error,30368 -n retry -t unix -u
| |-error,30369 -n retry -t unix -u
| `-smtpd,30374 -n smtp -t inet -u -o stress= -s 2
~~~
Voici un schéma qui illustre la communication entre les processus/files d'attente/tables :
<img src="https://upload.wikimedia.org/wikipedia/commons/e/ed/Postfix_architecture.svg" width="100%" alt="Architecture de Postfix" />
* Le processus **bounce** gère les messages de non-livraison qui sont stockés dans les répertoires `/var/spool/postfix/bounce/*`, `/var/spool/postfix/defer/*` ou encore `/var/spool/postfix/trace/*` selon les types de message.
### Changer les templates de bounce
Par exemple pour mettre un message personnalisé (et en Français) des DSN du type « successful delivery ».
Installer le paquet `postfix-doc`, copier le fichier `bounce.cf.default` dans `/etc/postfix/bounce.cf`, éditer le fichier comme voulu et ajouter la directive `bounce_template_file = /etc/postfix/bounce.cf` à postfix.
```
# apt install postfix-doc
# install -m 644 /usr/share/doc/postfix-doc/examples/bounce.cf.default /etc/postfix/bounce.cf
# vim /etc/postfix/bounce.cf
# echo "bounce_template_file = /etc/postfix/bounce.cf" >> /etc/postfix/main.cf
# systemctl reload postfix
```
## Monitoring
La surveillance régulière des fichiers de journalisation ainsi que des files d'attente s'avère nécessaire, éventuellement à l'aide d'outils permettant de générer des statistiques, des courbes, etc. On peut ainsi citer l'outil **mailgraph** qui trace des courbes _rrdtool_ à partir du fichier de journalisation, ou encore **Munin** qui trace des courbes selon l'état des files d'attente.
### mailgraph
~~~
# apt install mailgraph
~~~
[mailgraph](http://mailgraph.schweikert.ch/) fait tourner un démon Perl qui analyse `/var/log/mail.log`, on peut ensuite visualiser des courbes RRDtool via un script CGI `/usr/lib/cgi-bin/mailgraph.cgi`.
Pour diverses raisons, si l'on ne veut pas avoir de module CGI on pourra utiliser un script Shell à placer en crontab :
~~~{.bash}
#!/bin/sh
MAILGRAPH_PATH=/usr/lib/cgi-bin/mailgraph.cgi # Debian
MAILGRAPH_DIR=/var/www/mailgraph
umask 022
mkdir -p $MAILGRAPH_DIR
$MAILGRAPH_PATH | sed '1,2d ; s/mailgraph.cgi?//' > $MAILGRAPH_DIR/index.html
for i in 0-n 0-e 1-n 1-e 2-n 2-e 3-n 3-e; do
QUERY_STRING=$i $MAILGRAPH_PATH | sed '1,3d' > $MAILGRAPH_DIR/$i
done
~~~
### Munin
Par défaut, on trouve des plugins intéressants, notamment *postfix_mailqueue* pour l'évolution des files d'attente.
Pour activer les plugins Postfix pour Munin :
~~~
# cd /etc/munin/plugins
# ln -s /usr/share/munin/plugins/postfix_mailqueue
# ln -s /usr/share/munin/plugins/postfix_mailstats
# ln -s /usr/share/munin/plugins/postfix_mailvolume
~~~
### Nagios
Voici des checks standards pour vérifier que Postfix répond en SMTP et surveiller sa file d'attente :
~~~
$ /usr/lib/nagios/plugins/check_smtp -H localhost
$ /usr/lib/nagios/plugins/check_mailq -M postfix -w 42 -c 1337
~~~
### log2mail
Pour être alerté en cas d'erreurs graves, voici une config pour log2mail :
~~~
file = /var/log/mail.log
pattern = "fatal:"
mailto = alert@example.com
pattern = "panic:"
mailto = alert@example.com
pattern = "No such file or directory"
mailto = alert@example.com
pattern = "table lookup problem"
mailto = alert@example.com
pattern = "warning: connect to Milter service"
mailto = alert@example.com
pattern = "451 4.7.1 Service unavailable - try again later"
mailto = alert@example.com
~~~
### pflogsumm
C'est un petit outil pour afficher des stats dans le terminal, plutôt pratique, évite de « grepper » à la main `mail.log`.
## Délivrabilité
La _délivrabilité_ est un concept visant à s'assurer qu'un email envoyé va bien atteindre son destinataire.
Voici un check-up pour s'assurer d'avoir une bonne _délivrabilité_ :
* Reverse DNS configuré vers un enregistrement valide pointant lui-même vers l'adresse IP du serveur mail
* IPv6 correctement configuré (avec reverse DNS) ou desactivé
* Utiliser une adresse de retour valide (expéditeur d'enveloppe ou **Return-Path**) et traiter les retours régulièrement voire dynamiquement en cas de gros volume
* Configurer SPF
* Configurer DKIM
* Configurer DMARC
* Nettoyer ses entêtes, notamment des informations locales (IP RFC1918, enregistrements DNS locaux, etc.)
* S'enregistrer auprès de <http://www.dnswl.org/>
* S'enregistrer auprès de <http://www.emailreg.org/> (payant, environ 20$/domaine/an)
* Pour Hotmail/Outlook/Microsoft/Office365, faire un ticket support depuis [sender.office.com](https://sender.office.com/) et ce formulaire <https://support.microsoft.com/en-us/supportrequestform/8ad563e3-288e-2a61-8122-3ba03d6b8d75> pour autoriser IPv4.
* Payer <https://returnpath.com/fr/> pour améliorer sa délivrabilité auprès de Yahoo/Microsoft/etc. (payant en fonction du volume et très cher...)
* Régler son rythme d'envoi, notamment vers Orange, Free, etc.
* Vérifier son contenu via des outils comme _SpamAssassin_
* Vérifier la réputation via <https://www.talosintelligence.com/reputation_center/email_rep>
* Vérifier via Postmaster tools de Google en cas de problème de Spam pour Google/Gmail
* Vérifier via <https://sendersupport.olc.protection.outlook.com/snds/> en cas de problème de Spam pour Microsoft/Hotmail/Live
### SPF
[SPF](https://fr.wikipedia.org/wiki/Sender_Policy_Framework) est une norme pour vérifier l'adresse IP expéditrice d'un email.
La vérification se fait en utilisant le nom de domaine de l'expéditeur d'enveloppe et en récupérant un enregistrement DNS qui va lister les adresses IP autorisées.
Voici un exemple d'enregistrement DNS autorisant des adresses IP pour une adresse en `@example.com`
~~~
@ IN TXT "v=spf1 a mx ptr ip4:192.0.2.142 ip4:192.0.2.0/24 ip6:2001:db8::/32 ~all"
~~~
Voici un exemple d'enregistrement DNS autorisant l'envoi de n'importe où :
~~~
@ IN TXT "v=spf1 a mx ptr +all"
~~~
> *Note* : on peut utiliser un `include:` vers un autre enregistrement TXT, pratique pour la gestion ou éviter d'avoir des enregistrements TXT [dépassant 255 caractères](https://kb.isc.org/docs/aa-00356).
### DKIM
[DKIM](HowtoOpenDKIM) est une norme pour ajouter une signature cryptographique dans les entêtes d'un email envoyé.
La signature se fait à partir à de l'expéditeur d'entête (`From:` d'un email), des entêtes au choix (sujet, date, etc.) et le corps du message.
Cela utilise aussi une clé publique stockée dans un enregistrement DNS TXT.
Voir <https://wiki.evolix.org/HowtoOpenDKIM>
### DMARC
[DMARC](https://fr.wikipedia.org/wiki/DMARC) est une spécification qui vient en complément de DKIM et SPF.
Cela permet de spécifier aux serveurs de messagerie comment traiter les emails reçus non conformes aux vérifications SPF et/ou DKIM.
Cela permet également de récupérer des informations voire des emails complets si ils ne sont pas conformes.
Encore une fois, cela se fait avec un enregistrement DNS TXT.
Voici un exemple d'enregistrement DNS basique :
~~~
_dmarc IN TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com"
~~~
Voici un exemple plus avancé :
~~~
_dmarc IN TXT "v=DMARC1;p=reject;rua=mailto:dmarc+aggr@example.com;ruf=mailto:dmarc+forensic@example.com;fo=1;adkim=r;aspf=r;sp=none;pct=100"
~~~
### Contacts des principaux fournisseurs d'email
En cas de souci de _délivrabilité_ vers un domaine particulier, on est amené à contacter son responsable.
En théorie l'adresse email `postmaster@` permet cela.
En pratique pour les principaux fournisseurs d'emails, voici comment les contacter :
* Free : <http://postmaster.free.fr/>
* Orange : <http://assistance.orange.fr/la-cellule-abuse-1260.php>
* Hotmail/Outlook/Microsoft : <https://support.microsoft.com/en-us/getsupport?oaspworkflow=start_1.0.0.0&wfname=capsub&productkey=edfsmsbl3&ccsid=635688189955348624&wa=wsignin1.0>
* Yahoo : <https://postmaster.yahoo.com/sender-request>
* La Poste : <https://postmaster.laposte.net/>
* GMAIL : <http://support.google.com/mail/bin/request.py?contact_type=bulk_send&&hl=en> (NE REPONDENT JAMAIS !!!)
## Postcreen
*Postscreen* est un démon léger destiné à faire des tests préliminaires avant de passer un message entrant à Postfix… ou de le rejeter !
Voir <https://wiki.evolix.org/HowtoMail/Antispam#postscreen>
## FAQ
### Récupérer expéditeur et destinataire dans mail.log
Pour récupérer à la fois l'adresse expéditeur et destinataire dans les logs :
~~~
# grep "blocked using FBLW15" /var/log/mail.log | cut -d " " -f 6 | tr -d ':' \
| while read msgid; do grep $msgid /var/log/mail.log |grep " postfix/" \
| grep -E '(from|to)=<'|awk -F ' ' '{ print $1,$2,$3,$7 }' |tr -d ','; echo; done
~~~
### Taille maximum d'un message
Par défaut, la taille d'un message est limitée à 10 Mo, cela se modifie avec le paramètre `message_size_limit`.
Attention, lorsqu'une pièce jointe est dans un format binaire (exemples : JPG, PDF, etc.), les emails sont traduits en caractères texte (conversion [uuencode](https://fr.wikipedia.org/wiki/Uuencode)) ce qui provoque une augmentation de la taille jusqu'à 40%.
Voici par exemple le paramètre que l'on conseille de mettre si l'on veut autoriser les messages jusqu'à 20 Mo :
Connaître la taille limite d'un message
~~~
message_size_limit = 25600000
~~~
### SMTPUTF8
Il peut arriver quil y ait des problèmes dans linteraction entre
mail(1), postfix(1) et des accents dans le sujet. Il faut alors
jouer avec loption smtputf8_autodetect_classes (plus de détails
dans http://www.postfix.org/SMTPUTF8_README.html)
### Relai vers Mailjet selon l'expéditeur
Voir leur documentation : <https://fr.mailjet.com/docs/code/postfix>