Postfix

De Justine's wiki
Aller à la navigation Aller à la recherche

Présentation de cette page

Le but ici n'est pas de présenter le fonctionnement de Postfix (pour le moment en tout cas), mais de stocker quelques commandes utiles et autres aides dans l'exploitation de Postfix

Commandes de mailqueue

  • Voir la mailqueue:
mailq
  • Voir le contenu d'un mail de la mailqueue
postcat -q 75FE3300402C
#Ici le chiffre correspond à un ID de mail
  • Supprimer un mail de la mailqueue
postsuper -d 75FE3300402C

Problèmes d'envoi en masse

Une adresse a été compromise et je veux voir a qui elle a envoyé ses spams :

cat loganalyse.txt | grep "adressecompromise" | grep -oE "\->.*" | grep -oE "<[a-zA-Z0-9@\.\-\_]*>" >> adresses.txt

Pour faire du mailq shaping, dans main.cf :

# valeur originales avant modif ETR du 20 mai 2019
#slow_destination_recipient_limit = 20
#slow_destination_concurrency_limit = 2
#slow_destination_rate_delay = 2s 

slow_destination_recipient_limit = 10
slow_destination_concurrency_limit = 2
slow_destination_rate_delay = 1s


smtp-amavis_destination_concurrency_limit = 10

Emplacement de la mailqueue

Postfix stocke sa mailq dans /var/spool/postfix. Ce dossier comporte plusieurs sous-dossier contenant eux-même les emails, lisible directement.

/var/spool/postfix
[root@gulliver postfix]# ls
active  corrupt  deferred  hold      maildrop  private  saved
bounce  defer    flush     incoming  pid       public   trace

Mapping d'adresses sortantes

Si l'on veut spoofer une adresse en sortie, il faut passer par le réglage suivant :

<syntaxhighlight lang="bash">

  1. /etc/postfix/main.cf:
   smtp_generic_maps = hash:/etc/postfix/generic
  1. /etc/postfix/generic:
   his@localdomain.local               hisaccount@hisisp.example
   her@localdomain.local               heraccount@herisp.example
   @localdomain.local                  hisaccount+local@hisisp.example
  1. Puis:

postmap generic postfix reload </syntaxhighlight>

Setup des relais Postfix pour des domaines ou utilisateurs spécifiques

Dans la cadre où nous faisons passer nos mails par un relai avant de les envoyer vers internet, il se peut que ce relai refuse certains mails émis depuis notre organisation; en particulier les mails émis depuis chez nous avec une adresse d'un autre domaine. C'est pourquoi on peut vouloir émettre certains mails différement des autres.

Plusieurs choses sont possibles. Mais déjà, il faut regarder dans main.cf quel est le relayhost : si il est vide, on est en envoi direct. Ensuite, on peut créer un fichier bysender et le remplir : <syntaxhighlight lang="bash">

  1. Dans le fichier bysender

machine@truc.fr DUNNO #Signifie pas de relai @example.com [outbound.thirdparty.server.com]

  1. Les mails envoyés par x@example.com transiteront par outbound...
  2. Puis, pour en tenir compte:

postmap /etc/postfix/bysender

  1. Dans main.cf:

sender_dependent_relayhost_maps = hash:/etc/postfix/bysender

  1. Enfin

postfix reload </syntaxhighlight>

    1. Méthode plus récente

https://serverfault.com/questions/770002/postfix-sender-dependent-relayhost-maps-do-not-relay-a-specific-address/770041 If it doesn't work and you use Postfix 2.7 or newer, I suggest you to replace sender_dependent_relayhost_maps with sender_dependent_default_transport_maps. The latter provides more flexibility:

  1. /etc/postfix/main.cf

sender_dependent_default_transport_maps = hash:/etc/postfix/relay_by_sender

  1. /etc/postfix/relay_by_sender

no-relay@mydomain.com smtp @mydomain.com smtp:[ses.amazon.com]