{{tag>Brouillon Postfix SMTP Perl}} # Notes Postfix Voir * http://linuxserverworld.com/how-to-flush-and-delete-postfix-mail-queue-and-its-various-operations/ * [Mettre en place une limite sur le nombre de mails envoyés par IP sur Postfix](https://blog.valouille.fr/2014/09/mettre-en-place-une-limite-sur-le-nombre-de-mails-envoyes-par-ip-sur-postfix/) * Relay SMTP : https://wiki.csnu.org/index.php/Postfix_en_tant_que_relay Source : http://www.cyberciti.biz/tips/howto-postfix-flush-mail-queue.html Voir la file d'attente ~~~bash mailq ~~~ Vérif syntax ~~~bash postfix check ~~~ Sortir les mails de la file attentes (essaye de les ré-envoyer) ~~~bash postfix flush ~~~ Effacer tous les courriels de la file d'attente ~~~bash postsuper -d ALL ~~~ Effacer tous les mails de la "deferred queue" ~~~bash postsuper -d ALL deferred ~~~ Source : http://www.cyberciti.biz/tips/howto-postfix-flush-mail-queue.html `postfix-delete.pl` ~~~perl #!/usr/bin/perl $REGEXP = shift || die "no email-adress given (regexp-style, e.g. bl.*\@yahoo.com)!"; @data = qx; for (@data) { if (/^(\w+)(\*|\!)?\s/) { $queue_id = $1; } if($queue_id) { if (/$REGEXP/i) { $Q{$queue_id} = 1; $queue_id = ""; } } } #open(POSTSUPER,"|cat") || die "couldn't open postsuper" ; open(POSTSUPER,"|postsuper -d -") || die "couldn't open postsuper" ; foreach (keys %Q) { print POSTSUPER "$_\n"; }; close(POSTSUPER); ~~~ Efface de la file d'attente tous les message provenant ou en destination du domain fackspamdomain.com ~~~bash ./postfix-delete.pl fackspamdomain.com ~~~ Efface tous les courriel contenant le mot "xyz" ~~~bash ./postfix-delete.pl xyz ~~~ http://www.system-linux.eu/index.php?post/2009/01/27/Traitement-de-Queue-mail-Postfix Supprimer un message de la file d'attente ~~~bash postsuper -d E795D42A16 ~~~ Mettre un messages en attente (hold) : ~~~bash postsuper -h E795D42A16 ~~~ Remettre en file d'attente un message : ~~~bash postsuper -r E795D42A16 ~~~ Afficher le contenu d'un message : ~~~bash postcat -q E795D42A16 ~~~ Pour forcer l'envoie de messages spécifique à un domaine non présent dans les paramètres relay_domains de la configuration Postfix : Ajouter cette ligne dans le fichier main.cf : `main.cf` ~~~ini fast_flush_domains = $relay_domains mondomain.fr ~~~ Puis : ~~~bash postqueue -s mondomain.fr ~~~ ## Autre ### Exemple de config `/etc/aliases` ~~~ plop: plop@localhost.acme.fr ~~~ ~~~bash postalias /etc/aliases ~~~ `/etc/postfix/main.cf` ~~~ myorigin = localhost.acme.fr mydestination = $myhostname, localhost.$mydomain, localhost, $myorigin, transport_maps = hash:/etc/postfix/transport mydomain = acme.fr myhostname = myhostname relayhost = 192.168.6.28 default_transport = smtp relay_transport = smtp #inet_interfaces = localhost inet_interfaces = loopback-only inet_protocols = ipv4 ~~~ ~~~bash systemctl reload postfix ~~~ `/etc/postfix/transport` ~~~ laposte.fr : acme.fr : localhost.acme.fr local: * error: domaine non autorise ~~~ ~~~bash postmap /etc/postfix/transport ~~~ ~~~bash /usr/sbin/postdrop -r ~~~ ## Conf sur Debian Serveur de référence ~~~bash apt-get install debconf-utils debconf-get-selections | grep -e '^postfix ~~~ Nouveau serveur ~~~bash LANG=C dpkg-reconfigure postfix ~~~ Serveur de référence ~~~bash postconf -n ~~~ Nouveau serveur ~~~bash # Exemple postconf -e relayhost= postconf -e myorigin=/etc/mailname ~~~ FQDN ici `/etc/mailname` ## Pb ### Pb FQDN Erreur : * Helo command rejected: need fully-qualified hostname; * Sender address rejected: Domain not found (in reply to RCPT TO command)) `/var/log/mail` ~~~ Helo command rejected: need fully-qualified hostname; ~~~ `/etc/mailname` ~~~ smtp.acme.fr ~~~ ~~~bash postconf -e myhostname=smtp.belaris.fr postfix check service postfix reload ~~~ ## Test Question What is the function of this Postfix configuration ? ~~~ini relayhost = relay_transport = relay relay_domains = static:ALL smtpd_end_of_data_restrictions = check_client_access static:discard ~~~