Outils pour utilisateurs

Outils du site


linux:howto:postfix

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
linux:howto:postfix [31/03/2008 16:48] – Ajout mailman daniellinux:howto:postfix [28/08/2010 17:15] (Version actuelle) – aj alias daniel
Ligne 11: Ligne 11:
  
 On suppose que le host est myhost.example.com et qu'il gère les mails de example.com  et example2.com. Les boites mails au format maildir sont dans /home/mail (puis domaine et user), avec uid:gid 5000:5000 (mailboxes:mailboxes). La conf des domaines et comptes virtuels dans /etc/postfix/virtual/, avec les mots de passe pop/imap dans /etc/postfix/dovecot/users.conf (c'est arbitraire, vous préfèrerez peut être le ranger dans /etc/postfix/virtual/ ou /etc/dovecot). On suppose que le host est myhost.example.com et qu'il gère les mails de example.com  et example2.com. Les boites mails au format maildir sont dans /home/mail (puis domaine et user), avec uid:gid 5000:5000 (mailboxes:mailboxes). La conf des domaines et comptes virtuels dans /etc/postfix/virtual/, avec les mots de passe pop/imap dans /etc/postfix/dovecot/users.conf (c'est arbitraire, vous préfèrerez peut être le ranger dans /etc/postfix/virtual/ ou /etc/dovecot).
 +
 +**Rq** : pour utiliser une ip particulière (surtout pour sortir par l'ip déclaré dans les MX si vous avez plusieurs ip), modifier le inet_interfaces du main.cf. (cf http://advosys.ca/papers/postfix-instance.html et pour relayer certains domaines vers un autre host http://linuxfr.org/forums)/10/24567.html)
  
 ===== postfix ===== ===== postfix =====
Ligne 42: Ligne 44:
 smtpd_tls_key_file=/etc/ssl/private/myhost.key smtpd_tls_key_file=/etc/ssl/private/myhost.key
 </code> </code>
 +
  
 ==== Ajout des domaines virtuels ==== ==== Ajout des domaines virtuels ====
Ligne 55: Ligne 58:
 virtual_mailbox_base = /home/mail virtual_mailbox_base = /home/mail
 # les domaines virtuels (donc pas dans mydestination), on pourrait les lister sur la ligne ci-dessous séparé par une espace plutôt qu'un par ligne dans un fichier externe # les domaines virtuels (donc pas dans mydestination), on pourrait les lister sur la ligne ci-dessous séparé par une espace plutôt qu'un par ligne dans un fichier externe
 +# Si l'on utilise dovecot deliver comme lda, ce qui suit ne sera pas utilisé pour livrer le courrier
 +# mais postfix va l'utiliser pour refuser le courrier vers un utilisateur inexistant (dès la connexion SMTP)
 +# cf http://postfix.traduc.org/index.php/postconf.5.html#smtpd_reject_unlisted_recipient
 virtual_mailbox_domains = /etc/postfix/virtual/domains virtual_mailbox_domains = /etc/postfix/virtual/domains
 # liste des boites et leur emplacement (relatif à virtual_mailbox_base) # liste des boites et leur emplacement (relatif à virtual_mailbox_base)
Ligne 95: Ligne 101:
  
 Jusque là, tout va bien ;-) Jusque là, tout va bien ;-)
 +
 +
  
  
Ligne 101: Ligne 109:
 On ajoute au main.conf On ajoute au main.conf
 <code> <code>
-# restrictions smtp+# restrictions smtp  cf http://postfix.traduc.org/index.php/SMTPD_ACCESS_README.html 
 +smtpd_client_restrictions = permit_mynetworks, 
 +  permit_sasl_authenticated, 
 +  reject_unknown_client_hostname, 
 +  reject_unknown_reverse_client_hostname 
 smtpd_recipient_restrictions = permit_mynetworks, smtpd_recipient_restrictions = permit_mynetworks,
   permit_sasl_authenticated,   permit_sasl_authenticated,
   reject_unauth_destination,   reject_unauth_destination,
   reject_unknown_recipient_domain,   reject_unknown_recipient_domain,
-  reject_unknown_sender_domain, 
-  reject_unknown_helo_hostname,   
-  reject_unknown_client_hostname, 
-  reject_unverified_recipient, 
-  reject_unverified_sender,    
   reject_non_fqdn_recipient,   reject_non_fqdn_recipient,
-  reject_non_fqdn_sender, + warn_if_reject reject_unverified_recipient 
-  reject_non_fqdn_helo_hostname+ 
-  reject_invalid_helo_hostname+smtpd_sender_restrictions = reject_non_fqdn_sender, 
 +  reject_unknown_sender_domain
 + warn_if_reject reject_unverified_sender 
 +smtpd_helo_restrictions = warn_if_reject reject_invalid_helo_hostname
 + warn_if_reject reject_non_fqdn_helo_hostname, 
 + warn_if_reject reject_unknown_helo_hostname
  
 # restriction mailbox # restriction mailbox
Ligne 128: Ligne 141:
 smtpd_recipient_limit = 50 smtpd_recipient_limit = 50
 </code> </code>
-cf http://blog.taragana.com/index.php/archive/6-simple-safe-postfix-changes-for-over-95-spam-reduction/fr/+cf http://blog.taragana.com/index.php/archive/6-simple-safe-postfix-changes-for-over-95-spam-reduction/fr/ et http://cjovet.free.fr/cours/postfix.htm#IV pour la signification de chacune des restrictions
  
 ===== dovecot ===== ===== dovecot =====
Ligne 278: Ligne 291:
 # et on vérifie que tout marche bien dans les logs # et on vérifie que tout marche bien dans les logs
 </code> </code>
 +
  
  
Ligne 292: Ligne 306:
 <code> <code>
 # on remplace la ligne smtp par # on remplace la ligne smtp par
-smtp      inet  n                               smtpd     -o content_filter=spamassassin+smtp      inet  n                               smtpd     -o content_filter=spamassassin -o receive_override_options=no_address_mappings
 # et à la fin on ajoute l'entrée # et à la fin on ajoute l'entrée
 spamassassin unix -                             pipe spamassassin unix -                             pipe
Ligne 298: Ligne 312:
   /usr/sbin/sendmail -oi -f ${sender} ${recipient}   /usr/sbin/sendmail -oi -f ${sender} ${recipient}
 </code> </code>
 +(merci à Julien Wadim pour la 2e option "-o receive_override_options=no_address_mappings", pour éviter la duplication de mail, cf http://blog.julienwadin.be/45/postfix-mails-en-double-lors-de-la-livraison-vers-une-boite-avec-copie-vers-une-autre/ pour l'explication).
  
 On edite /etc/default/spamassassin On edite /etc/default/spamassassin
Ligne 386: Ligne 401:
  
  
-===== Todo ===== + 
-Il reste à  +===== "Apprentissage" spamassassin ===== 
-  * créer les dossiers Spam-ok et Spam-KO (par exemple) dans chaque compte pour que les utilisateurs imap puissent y mettre les faux-positifs et faux negatifs, et mettre un cron pour sa-learn +Il reste à créer les dossiers Spam-ok et Spam-KO (par exemple) dans chaque compte pour que les utilisateurs imap puissent y mettre les faux-positifs et faux negatifs, et mettre un cron pour sa-learn. 
-  * mettre un exemple de filtre sieve perso + 
-  * créer une boite spécial spam, pour que les users puissent y faire suivre le spam+Un script d'exemple sur [[../scripts_bash/checkspam]]
  
 ===== Mailman ===== ===== Mailman =====
Ligne 469: Ligne 484:
  
 reste à vérifier que tout va bien sur http://listes.domaine.tld/admin... reste à vérifier que tout va bien sur http://listes.domaine.tld/admin...
 +
 +
  
 ===== Liens ===== ===== Liens =====
  
-Voir aussi http://johnny.chadda.se/2007/04/15/mail-server-howto-postfix-and-dovecot-with-mysql-and-tlsssl-postgrey-and-dspam/ (Mail server HOWTO - Postfix and Dovecot with MySQL) et http://workaround.org/articles/ispmail-etch/http://www.akadia.com/services/postfix_spamassassin.htmlhttp://dertompson.com/index.php/2008/02/13/mail-server-setup-for-debian-etch/ (avec maildrop sans ref à courier)http://www.vogelweith.com/debian_server/07_postfix.php+Voir aussi  
 +  * http://johnny.chadda.se/2007/04/15/mail-server-howto-postfix-and-dovecot-with-mysql-and-tlsssl-postgrey-and-dspam/ (Mail server HOWTO - Postfix and Dovecot with MySQL) 
 +  * http://workaround.org/articles/ispmail-etch/ 
 +  * http://www.akadia.com/services/postfix_spamassassin.html 
 +  * http://dertompson.com/index.php/2008/02/13/mail-server-setup-for-debian-etch/ (avec maildrop sans ref à courier) 
 +  * http://www.vogelweith.com/debian_server/07_postfix.php 
 + 
 +Et  
 +  * cours postfix http://cjovet.free.fr/cours/postfix.htm 
 +  * la doc de postfix.org en fr http://x.guimard.free.fr/postfix/ 
 +  * filtrage de contenu par postfix http://postfix.traduc.org/index.php/CONTENT_INSPECTION_README.html avec particulièrement http://postfix.traduc.org/index.php/FILTER_README.html, voir aussi http://www.starbridge.org/spip/spip.php?article7&artsuite=2#sommaire_1 
 +  * http://www.postfixvirtual.net/ (tuto complet avec MySQL - Courier-IMAP - Courier-maildrop - Cyrus-SASL - Amavisd-new - Clamav - Spamassassin) 
 +  * http://www.openbsd-france.org/documentations/OpenBSD-postfix-courier-imap.html (idem) 
 +  * http://www.securityfocus.com/infocus/1598 
 +  * à propos des filtres "maison" regarder le dernier post de http://forum.hardware.fr/hfr/OSAlternatifs/Logiciels-2/postfix-maintenant-spamassassin-sujet_27053_1.htm 
 +  * pour rejeter directement (sans queuing, avec mime_header_checks) certains mail avec PJ indésirables http://forum.hardware.fr/hfr/OSAlternatifs/Logiciels-2/postfix-interdire-jointes-sujet_27904_1.htm 
 +  * tuto avec Amavisd, Mysql, Spamassassin, Dspam, Courier-IMAP http://starbridge.org/spip/spip.php?article12 
 +  * tuto avec Courier, MySQL, sasl, amavisd-new, SpamAssassin (+Razor, Pyzor & DCC), ClamAV http://www.howtoforge.com/virtual_users_and_domains_with_postfix_debian_etch 
 +  * articulation postfix / SA : http://www.xnote.com/howto/postfix-spamassassin.html & http://www.akadia.com/services/postfix_spamassassin.html 
 +  * postfix & sa sans rien d'autre pour conf vps light (mais apparemment le spam est viré lors de la connexion smtp, pas moyen de récupérer les faux positifs, et si SA rame, la transaction risque d'être un peu longue) http://blogbound.com/etch-postfix-spamassassin-vps 
 +  * tutos complets (tous avec amavis) http://www.howtoforge.com/virtual_postfix_mysql_quota_courier, http://flurdy.com/docs/postfix/, http://www.howtoforge.com/postfix_antispam_mailscanner_clamav_ubuntu 
 +    * http://workaround.org/articles/ispmail-etch/ (avec dovecot) 
 +    * http://openmailadmin.ossdl.de/wiki/howto/Postfix-SASL-Cyrus-MySQL-Amavis-Postgrey-SpamAssassin-ClamAV-Squirrelmail-Mailman-Mailgraph-OMA  
 +    * http://www.starbridge.org/spip/spip.php?article12 Amavisd, Mysql, Spamassassin, Dspam, Courier-IMAP 
 +    * postfix + courier http://paradoxal.org/blog/post/2007/08/05/Serveur-Debian-Serveur-email-MTA-MDA 
 +  * conf dspam http://www.paradoxal.org/blog/post/2008/02/16/Spam-spam-spam-tu-ne-mauras-pas 
 + 
 +===== Bonus ===== 
 +==== lire les mails du secondaire ==== 
 + 
 +Dans le cas où vous avez un MX secondaire qui prend les mails d'un primaire en rade, et que vous avez besoin d'en lire un 
 +  * postqueue -p : pour lister les mails en attente 
 +  * postcat path/2/deferred/file : pour en lire un en console (un à vous !) 
 + 
 +Par exemple, (attention, à ne pas faire s'il y a beaucoup de mails !) 
 +<code bash> 
 +find /var/spool/postfix/deferred/ -type f -mmin -5|xargs postcat|sed -ne '/Content-Disposition: attachment/,$ d; 
 +     /^\*\*\* MESSAGE CONTENTS/,/^\*\*\* HEADER EXTRACTED/ p;' 
 +</code> 
 +==== postmap_all ==== 
 +<code bash> 
 +#!/bin/bash 
 +# script qui cherche les fichiers de hash et fait un postmap dessus 
 + 
 +sed -ne '/^[ \t]*#/ d; s/.*hash:\(.*\)/\1/p' < /etc/postfix/main.cf |while read map 
 +do 
 +  echo $map 
 +  [ "$map" = '/etc/aliases' ] && newaliases || postmap $map 
 +done 
 +echo "à priori, il ne devrait rester à faire que le :" 
 +echo "/etc/init.d/postfix reload" 
 +</code> 
 + 
 + 
 +==== Réécriture des users locaux ==== 
 +Pour que le courrier envoyé par les users locaux (au hasard www-data) le soit d'une adresse plus parlante, on peut ajouter dans le main.cf 
 +<file> 
 +smtp_generic_maps = hash:/etc/postfix/smtp_generic_maps.hash 
 +</file> 
 +et dans smtp_generic_maps.hash 
 +<file> 
 +www-data webmaster@example.com 
 +</file> 
 + 
 +Et si l'on en a plein, on peut perfectionner le truc avec 
 +<code bash> 
 +# id du group des users concernés, le UID avec cet ID sera pris même s'il n'appartient pas au groupe 
 +# (sinon faut modifier la règle sed pour prendre le 4e champ délimité par :) 
 +GID=XXX 
 +DOM=monhost.example.com 
 +USER=webmaster@example.com 
 +sed -ne '/'$GID'/ s/^\([^:]\+\):.*/\1@'$DOM' '$USER'/p' < /etc/passwd > /etc/postfix/smtp_generic_maps.hash 
 +</code>
  
 +Pour que les bounces soient aussi renvoyés à la bonne adresse, il faut ajouter dans /etc/aliases
 +<file>
 +www-data: webmaster@example.com
 +</file>
linux/howto/postfix.1206974895.txt.gz · Dernière modification : 31/03/2008 16:48 de daniel