Table des matières
Postfix
Installer un serveur mail SMTP/POP avec postfix, courier-pop, spamassassin :
Les bases
Liens:
http://postfix.traduc.org/index.php/postconf.5.html
http://www.supinfo-projects.com/fr/2005/installation_spamassassin/2
http://ben.reynerie.org/services/mail/serveur_mail.htm
http://www.laurentconstantin.com/common/utilordi/b6utiladminappli/postfix.doc
http://wiki.nfrance.com/vds:systeme:smtp_et_pop_pour_boites_mails_virtuelles
Serveur smtp le plus mieux et plus super pour envoyer des mails… C'est donc un serveur qui est a l'ecoute sur le port 25 (et qu'il faut en tenir compte s'il y a un firewall…).
Il est vain de fermer le port 25. Les restrictions d'acces doivent plutot etre faite dans la configuration de postfix.
Installer et configurer
Comme d'hab
# apt-get install postfix
Et c'est prêt !? presque… il faut editer le fichier
/etc/postfix/main.cf
Et puis
... myhostname = smtp.mon_domaine.local ... myorigin = /etc/mailname mydestination = mon_domaine.fr, localhost.localdomain, localhost.localdomain, localhost, mon_domaine.local ... mynetworks = /etc/postfix/mynetworks ...
Et en sortie, verifier:
# cat /etc/mailname mon_domaine.fr
Editer/creer le fichier mynetworks et avoir un truc comme ca:
# cat mynetworks # reseau local localhost 127.0.0.1/32 192.168.0.0/24 192.168.1.0/24 # les proches... 88.99.00.11
Les IP appartenants a mynetworks pourront ecrire au monde entier en utilisant ce smtp. Le reste du monde, ne pourra envoyer des mails qu'aux utilisateurs déclarés. (Exemple: postmaster)
reload
Des qu'on modifie le fichier main.cf, ou un fichier qui en depend, il faut faire:
# /etc/init.d/postfix reload
Problème avex les certificates SSL
Par défaut, lors d'une tentative, j'ai eu un avertissement comme quoi une cle SSL était obsolète… j'ai désactivé ca en éditant le fichier /etc/postfix/main.cf
afin d'avoir:
#smtpd_use_tls=yes smtpd_use_tls=no
modifier un fichier hash
Certains fichiers peuvent être édités avec vi, mais il faut ensuite creer le fichier '.db' associé. (le hash). Pour cela il faut faire (par exemple):
# postmap access
ce qui créé un fichier 'access.db'. Ensuite il faut faire:
/etc/init.d/postfix reload
aliases
Aprés avoir edité le fichier /etc/aliases
, il faut faire:
# newaliases # /etc/init.d/postfix reload
Exemple d'aliases:
# cat aliases # /etc/aliases mailer-daemon: postmaster postmaster: root nobody: root hostmaster: root usenet: root news: root webmaster: root www: root ftp: root abuse: root noc: root security: root #root: thierry upscave: root thierry: root root: xxxxxxxxxxxxx@free.fr
Configurations
Reseau ".local"
Lorsqu'on a des machines locales avec des noms locaux, pas facile de les faire communiquer avec certains serveurs, dont Free.
Ainsi, une adresse: root@trouduc.thierry-jaouen.local
est rejeté avec:
host mx1.free.fr[212.27.48.6] said: 553 sorry, your envelope sender domain must exist (#5.7.1) (in reply to MAIL FROM command)
Il faut que postfix
re-ecrit (rewrite) ce genre d'adresse.
Solution
Lien:
Editer un fichier texte, genre:
/etc/postfix/generic
Y mettre dedans quelque chose comme ca:
# TJ ----------------- # -------------------- @trouduc.thierry-jaouen.local @thierry-jaouen.fr
Et puis, de retour sur le shell:
# postmap /etc/postfix/generic
(Un fichier generic.db
est créé)
Editer /etc/postfix/main.cf
, et y inserer une ligne comme ca:
smtp_generic_maps = hash:/etc/postfix/generic
Recharger la config:
# /etc/init.d/postfix reload
Verifier que ca marche: (sur le poste local)
(trouduc.thierry-jaouen.local)$ date | mail -s "test" adresse_mail@domaine.ext
postmaster
Ouai, mais j'ai encore un problème avec “postfix” lui-même, lorsqu'il genere un mail pour “postmaster”:
Oct 11 22:39:14 netcave postfix/smtp[4768]: BC4F742A7: to=<mon_adresse_mail@free.fr>, orig_to=<postmaster>, relay=mx1.free.fr[212.27.48.7]:25, delay=0.35, delays=0.01/0/0.28/0.06, dsn=5.0.0, status=bounced (host mx1.free.fr[212.27.48.7] said: 553 sorry, your envelope sender domain must exist (#5.7.1) (in reply to MAIL FROM command)) Oct 11 22:39:14 netcave postfix/bounce[4770]: warning: BC4F742A7: undeliverable postmaster notification discarded Oct 11 22:39:14 netcave postfix/qmgr[4734]: BC4F742A7: removed
Solution
J'avais oublié “$myhostname” (lui-même) dans le fichier “generic” ! (c'est a dire le “host” déclaré avec “myhostname = …”)
Tips
queue
Voir la queue:
# postqueue -p
Grosse queue! Supprimer les “deferer” :
# postsuper -d ALL deferred postsuper: Deleted: 1449 messages
Ou simplement tout ?
# postsuper -d ALL
Remettre tout les messages en attente:
# postsuper -r ALL
Voir un message:
# postcat -q <ID_DU_MESSAGE> | less
purge
Petit scripte (a adapter) pour purger les SPAM en “deferred” …
- Ca recherche les “ID” dans le spool de “deferred”
- Recherche le flag “Spam Yes” : si oui, efface
- Recherche une date mise en queue dans l'année 2008 (là, nous sommes en 2010!) : si oui efface
#!/bin/sh TMPFILE=/tmp/postfix-purge-deferred.txt rm -f $TMPFILE >/dev/null 2>&1 find /var/spool/postfix/deferred/ | awk -F'/' '{ print $7; }' | egrep -v "^$" > $TMPFILE if [ -e $TMPFILE ]; then echo "fichier existe" while read mailID; do SpanStatus=$( postcat -q $mailID | grep "X-Spam-Status: Yes" ) if [ "x$SpanStatus" != "x" ]; then echo "Spam: $mailID : $SpanStatus" postsuper -d $mailID fi Older=$( postcat -q $mailID | egrep "^message_arrival_time.*2008" ) if [ "x$Older" != "x" ]; then echo "Old: $mailID : $Older" postsuper -d $mailID fi done < $TMPFILE fi
Amavis et autres
En appliquant un article de “Linux Mag” N°113 (Fevrier 2009), je m'aperçois qu'il est trés difficile de faire prendre en compte les modifications de master.cf
par PostFix … Pourquoi ? je ne sais pas.
La seule astuce trouvé:
- modifier
master.cf
- taper:
# postsuper -r ALL
- et puis:
# postfix reload