linux:howto:postfix
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| linux:howto:postfix [03/03/2008 18:34] – ajout flags postfix manquants daniel | linux: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 | On suppose que le host est myhost.example.com et qu'il gère les mails de example.com | ||
| + | |||
| + | **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:// | ||
| ===== postfix ===== | ===== postfix ===== | ||
| Ligne 42: | Ligne 44: | ||
| smtpd_tls_key_file=/ | smtpd_tls_key_file=/ | ||
| </ | </ | ||
| + | |||
| ==== 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), | # les domaines virtuels (donc pas dans mydestination), | ||
| + | # Si l'on utilise dovecot deliver comme lda, ce qui suit ne sera pas utilisé pour livrer le courrier | ||
| + | # mais postfix va l' | ||
| + | # cf http:// | ||
| virtual_mailbox_domains = / | virtual_mailbox_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 | ||
| < | < | ||
| - | # restrictions smtp | + | # restrictions smtp cf http:// |
| + | 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_invalid_helo_hostname | + | smtpd_sender_restrictions = reject_non_fqdn_sender, |
| + | | ||
| + | warn_if_reject reject_unverified_sender | ||
| + | smtpd_helo_restrictions = warn_if_reject | ||
| + | | ||
| + | | ||
| # restriction mailbox | # restriction mailbox | ||
| Ligne 128: | Ligne 141: | ||
| smtpd_recipient_limit = 50 | smtpd_recipient_limit = 50 | ||
| </ | </ | ||
| - | cf http:// | + | cf http:// |
| ===== dovecot ===== | ===== dovecot ===== | ||
| Ligne 141: | Ligne 154: | ||
| aptitude install dovecot-common dovecot-imapd dovecot-pop3d | aptitude install dovecot-common dovecot-imapd dovecot-pop3d | ||
| </ | </ | ||
| + | |||
| + | |||
| Ligne 158: | Ligne 173: | ||
| auth default { | auth default { | ||
| mechanisms = plain login digest-md5 cram-md5 | mechanisms = plain login digest-md5 cram-md5 | ||
| - | # liste des passwds pour authentification pop/imap | + | # le lookup de deliver |
| + | userdb static { | ||
| + | # on met allow_all_users=yes pour éviter le lookup de deliver pour chaque user | ||
| + | # (postfix a déjà vérifié qu'il pouvait prendre le courrier, donc autant | ||
| + | # le distribuer même si ce user n'a pas de compte dovecot) | ||
| + | args = uid=5000 gid=5000 home=/ | ||
| + | } | ||
| + | | ||
| passdb passwd-file { | passdb passwd-file { | ||
| args = / | args = / | ||
| Ligne 172: | Ligne 194: | ||
| </ | </ | ||
| + | (ou bien utiliser le script [[: | ||
| et on peut se logger en pop / imap / pops / imaps et récupérer ses mails (avec authentification sécurisée si on veut)... reste à pouvoir les envoyer en utilisant le smtp avec tls | et on peut se logger en pop / imap / pops / imaps et récupérer ses mails (avec authentification sécurisée si on veut)... reste à pouvoir les envoyer en utilisant le smtp avec tls | ||
| Ligne 268: | Ligne 291: | ||
| # et on vérifie que tout marche bien dans les logs | # et on vérifie que tout marche bien dans les logs | ||
| </ | </ | ||
| + | |||
| Ligne 282: | Ligne 306: | ||
| < | < | ||
| # on remplace la ligne smtp par | # on remplace la ligne smtp par | ||
| - | smtp inet n | + | smtp inet n |
| # et à la fin on ajoute l' | # et à la fin on ajoute l' | ||
| spamassassin unix - | spamassassin unix - | ||
| Ligne 288: | Ligne 312: | ||
| / | / | ||
| </ | </ | ||
| + | (merci à Julien Wadim pour la 2e option "-o receive_override_options=no_address_mappings", | ||
| On edite / | On edite / | ||
| Ligne 336: | Ligne 361: | ||
| cf http:// | cf http:// | ||
| + | |||
| ===== webmail roundcube ===== | ===== webmail roundcube ===== | ||
| + | |||
| + | http:// | ||
| + | |||
| <code bash> | <code bash> | ||
| # recup de l' | # recup de l' | ||
| Ligne 362: | Ligne 391: | ||
| $rcmail_config[' | $rcmail_config[' | ||
| </ | </ | ||
| - | ===== Todo ===== | + | |
| - | Il reste à | + | regarder http:// |
| - | * 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 | + | Autres webmail : |
| - | * créer | + | * http:// |
| + | * http:// | ||
| + | * http:// | ||
| + | * http:// | ||
| + | |||
| + | |||
| + | |||
| + | ===== " | ||
| + | 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. | ||
| + | |||
| + | Un script d'exemple | ||
| + | |||
| + | ===== Mailman ===== | ||
| + | Pour installer mailman comme gestionnaire | ||
| + | |||
| + | <code bash> | ||
| + | aptitude install mailman | ||
| + | # choisir fr, mais ça sert à rien, car avec le paquet de etch il indique quand même : | ||
| + | Installing site language en ............................................ done. | ||
| + | </ | ||
| + | |||
| + | Ajouter un vhost apache basé sur / | ||
| + | <code bash> | ||
| + | # on prend la fin du fichier qui commence par un commentaire | ||
| + | sed -ne '/ | ||
| + | # on va modifier qq trucs à la main (logs & co) | ||
| + | joe / | ||
| + | # on active le vhost | ||
| + | a2ensite listes.domaine.tld | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | Dans / | ||
| + | <code python> | ||
| + | DEFAULT_EMAIL_HOST = ' | ||
| + | DEFAULT_URL_HOST = ' | ||
| + | DEFAULT_URL_PATTERN = ' | ||
| + | DEFAULT_SERVER_LANGUAGE = ' | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | # on peut relancer l' | ||
| + | dpkg-reconfigure -p low mailman | ||
| + | # et ça va mieux | ||
| + | Installing site language fr ............................................ done. | ||
| + | |||
| + | # Dans / | ||
| + | # ce domaine ne doit pas figurer ailleurs | ||
| + | relay_domains = ... listes.domaine.tld | ||
| + | transport_maps = hash:/ | ||
| + | mailman_destination_recipient_limit = 1 | ||
| + | |||
| + | # Dans / | ||
| + | mailman unix - | ||
| + | | ||
| + | | ||
| + | |||
| + | # et dans / | ||
| + | listes.domaine.tld | ||
| + | |||
| + | # on oublie pas le | ||
| + | postmap / | ||
| + | / | ||
| + | |||
| + | # Reste à créer | ||
| + | newlist mailman | ||
| + | |||
| + | # comme on y est invité, dans / | ||
| + | # mailman mailing list | ||
| + | mailman: | ||
| + | mailman-admin: | ||
| + | mailman-bounces: | ||
| + | mailman-confirm: | ||
| + | mailman-join: | ||
| + | mailman-leave: | ||
| + | mailman-owner: | ||
| + | mailman-request: | ||
| + | mailman-subscribe: | ||
| + | mailman-unsubscribe: | ||
| + | |||
| + | # puis | ||
| + | newaliases | ||
| + | / | ||
| + | |||
| + | # y'a plus qu'à démarrer mailman | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | reste à vérifier que tout va bien sur http:// | ||
| + | |||
| ===== Liens ===== | ===== Liens ===== | ||
| - | Voir aussi http:// | + | Voir aussi |
| + | * http:// | ||
| + | * http:// | ||
| + | * http:// | ||
| + | * http:// | ||
| + | * http:// | ||
| + | |||
| + | Et | ||
| + | * cours postfix http:// | ||
| + | * la doc de postfix.org en fr http:// | ||
| + | * filtrage de contenu par postfix http:// | ||
| + | * http:// | ||
| + | * http:// | ||
| + | * http:// | ||
| + | * à propos des filtres " | ||
| + | * pour rejeter directement (sans queuing, avec mime_header_checks) certains mail avec PJ indésirables http:// | ||
| + | * tuto avec Amavisd, Mysql, Spamassassin, | ||
| + | * tuto avec Courier, MySQL, sasl, amavisd-new, | ||
| + | * articulation postfix / SA : http:// | ||
| + | * postfix & sa sans rien d' | ||
| + | * tutos complets (tous avec amavis) http:// | ||
| + | * http:// | ||
| + | * http:// | ||
| + | * http:// | ||
| + | * postfix + courier http:// | ||
| + | * conf dspam http:// | ||
| + | |||
| + | ===== 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/ | ||
| + | |||
| + | Par exemple, (attention, à ne pas faire s'il y a beaucoup de mails !) | ||
| + | <code bash> | ||
| + | find / | ||
| + | / | ||
| + | </ | ||
| + | ==== postmap_all ==== | ||
| + | <code bash> | ||
| + | # | ||
| + | # script qui cherche les fichiers de hash et fait un postmap dessus | ||
| + | |||
| + | sed -ne '/^[ \t]*#/ d; s/ | ||
| + | do | ||
| + | echo $map | ||
| + | [ " | ||
| + | done | ||
| + | echo "à priori, il ne devrait rester à faire que le :" | ||
| + | echo "/ | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== 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 | ||
| + | < | ||
| + | smtp_generic_maps = hash:/ | ||
| + | </ | ||
| + | et dans smtp_generic_maps.hash | ||
| + | < | ||
| + | www-data webmaster@example.com | ||
| + | </ | ||
| + | |||
| + | 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' | ||
| + | # (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 '/' | ||
| + | </ | ||
| + | Pour que les bounces soient aussi renvoyés à la bonne adresse, il faut ajouter dans / | ||
| + | < | ||
| + | www-data: webmaster@example.com | ||
| + | </ | ||
linux/howto/postfix.1204565656.txt.gz · Dernière modification : 03/03/2008 18:34 de daniel