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