Outils pour utilisateurs

Outils du site


postfix

Différences

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

Lien vers cette vue comparative

postfix [2018/02/23 10:07] (Version actuelle)
Ligne 1: Ligne 1:
 +{{tag> www mail }}
 +
 +===== Postfix =====
 +
 +==== Biblio / sources ====
 +
 +
 +==== Filtrage ====
 +
 +=== Amavis ===
 +
 +installer amavis
 +
 +rajouter dans //​etc/​postfix/​main.cf//:​
 +<​code>​
 +content_filter = amavis:​[127.0.0.1]:​10024
 +</​code>​
 +
 +Exécuter:
 +<​code>​
 +postfix-add-filter amavis 10025
 +</​code>​
 +
 +
 +=== clamav ===
 +Installer gzip bzip2 unzip unrar zoo arj
 +
 +Installer et configurer le support antivirus d'​amavis (// /​etc/​amavis/​conf.d/​15_content-filter-mode//​)
 +
 +Rajouter dans // /​etc/​amavis/​conf.d/​20-debian_defaults//​ :
 +<​code>​
 +$final_virus_destiny ​     = D_BOUNCE;
 +</​code>​
 +
 +<​code>​
 +adduser clamav amavis
 +</​code>​
 +
 +=== spamassassin ===
 +
 +Installer et configurer. voir // /​etc/​amavis/​conf.d/​15_content-filter-mode//​)
 +
 +Configurer ensuite via // /​etc/​amavis/​conf.d/​20-debian_defaults //:
 +
 +
 +=== Autres mécanismes antispam ===
 +
 +== pyzor ==
 +
 +==== postgrey ====
 +
 +Le greylisting est une technique de lutte contre le spam et les virus.
 +
 + ​=== ​ Principe: ===
 +Tous les mails sont //rejeté// avec un message d'​erreur explicite. Le serveur de mail expéditeur est sensé renvoyer le mail après qqs minutes. Les spammeurs ne prennent pas cette peine.
 +
 +Les serveurs "​ok"​ sont ensuite mis en liste blanche pour traitement direct.
 +
 + ​=== ​ Avantages: ===
 +  * Simplicité de mise en oeuvre.
 +  * Travaille sur les enveloppes -> peu gourmand en ressources ( par rapport à spamassassin ).
 +
 + ​=== ​ Inconvénients:​ ===
 +  * Occasionne parfois des délais importants.
 +
 + ​=== ​ Mise en place: ===
 +
 +<​code>​
 +aptitude install postgrey</​code>​
 +
 +
 +
 +<​code>​
 +vim /​etc/​postfix/​main.cf
 +
 +smtpd_recipient_restrictions =
 +   ​check_policy_service inet:​127.0.0.1:​60000
 +   ​reject_unauth_destination
 +
 +</​code>​
 +
 +
 +
 +<​code>​
 + /​etc/​init.d/​postfix reload
 +</​code>​
 +
 +
 + ​=== ​ Stats: ===
 +
 +A faire sur un //vieux// fichier de log pour plus de précision:
 +
 +
 +<​code>​
 + ​postgreyreport --show_tries --nosingle_line ​ /​var/​log/​mail.log.0
 +</​code>​
 +
 +
 + === Obtenir la liste des serveurs ajoutés automatiquement sur liste blanche: ===
 +
 +<​code>​
 +[[:​sudo|sudo]]perl /​usr/​share/​doc/​postgrey_clients_dump
 +</​code>​
 +
 +
 + ​==== ​ Quelques notes sur la gestion des contrôles d'​accès ====
 +
 + ​=== ​ Objectif: encore moins de spam ===
 +
 + ​=== ​ Principe: dès la connexion au serveur mail, celui-ci vérifie que l'​expéditeur répond bien à certain critères ===
 +
 +Source: http://​x.guimard.free.fr/​postfix/​index.php?​page=SMTPD_ACCESS_README.html
 +
 + ​=== ​ Tester les regles sans risque: ===
 +
 +rajouter dans main.cf:
 +  ​
 +<​code>​
 + ​warn_if_reject reject_... ​
 +</​code>​
 +
 +
 + ​=== ​ Restrictions sur le **helo** ===
 +sections **smtpd_helo_restrictions**
 +
 +  * reject_invalid_hostname
 +  * reject_unknown_hostname : se caractérise par le message "Host not found" dans les logs
 +  * reject_non_fqdn_hostname : message "need fully-qualified hostname"​ dans les log
 +
 +
 +**problème**:​ bon nombre de domaine légitimes mal configurés générent des faux-positifs "host not found"
 +
 + ​=== ​ Restriction sur l'​expediteur ( la partie après le @ ) ===
 +section **smtpd_sender_restrictions**
 +
 +  * reject_unknown_sender_domain : message "​Sender address rejected: Domain not found" dans les logs
 +
 + ​=== ​ Blacklist et whitelisting ===
 +
 +il est possible d'​autoriser ou de refuser ponctuellement des mails à destination d'un domaine ou d'une adresse particulier à l'aide de la directive //​check_sender_access//:​
 +  ​
 +<​code>​
 +
 +smtpd_sender_restrictions =
 +   ​check_sender_access hash:/​etc/​postfix/​list
 +
 +</​code>​
 +
 +avec le fichier /​etc/​postfix/​list qui contient la liste des domaines ou des adresses dont ont veut spécifiquement accepter ou refuser les mails:
 +  ​
 +<​code>​
 +
 +# on accept les mails en provenance de test.fr
 +test.fr ​   OK
 +# on refuse les mails en provenance de hotmail.com avec le message d'​erreur standard
 +hotmail.com ​  ​REJECT
 +# on refuse les mails en provenance de hotmail.fr avec un message personnalisé
 +hotmail.fr ​  ​REJECT "Nous n'​autorisons pas les mails en provenance de hotmail ; merci d'​utiliser un VRAI service mail
 +
 +</​code>​
 +
 +
 +attention avec le whitelisting qui, trop permissif, peut amener à la configuration d'un [Openrelay]
 +
 +
 +# vim: set filetype=dokuwiki:​
 +
 +
 +==== SMTP Auth ====
 +
 +Dans main.cf rajouter
 +<​code>​
 +smtpd_sasl_auth_enable = yes
 +broken_sasl_auth_clients ​       = yes
 +smtpd_recipient_restrictions ​   =
 +   ​permit_mynetworks
 +   ​permit_sasl_authenticated
 +   ​reject_unauth_destination
 +</​code>​
 +
 +Créer le fichier /​etc/​sasl2/​smtpd.conf:​
 +<​code>​
 +pwcheck_method:​ saslauthd
 +mech_list: plain login
 +</​code>​
 +
 +tester avec telnet:
 +L'​astuce,​ c'est que le username et le mot de passe sont encodés en base64 (echo **-n** username | base64 )
 +<​code>​
 +telnet 100.0.0.101 smtp
 +Trying 100.0.0.101...
 +Connected to 100.0.0.101.
 +Escape character is '​^]'​.
 +220 mail1.example.com ESMTP Postfix
 +EHLO foo bar
 +250-mail1.example.com
 +250-PIPELINING
 +250-SIZE 10240000
 +250-VRFY
 +250-ETRN
 +250-AUTH PLAIN LOGIN
 +250-AUTH=PLAIN LOGIN
 +250-ENHANCEDSTATUSCODES
 +250-8BITMIME
 +250 DSN
 +auth login
 +334 VXNlcm5hbWU6
 +cm9vdA==
 +334 UGFzc3dvcmQ6
 +cm9vdA==
 +235 2.7.0 Authentication successful
 +</​code>​
 +
 +==== Sending data to microsoft office 365 ====
 +
 +C'est compliqué et aléatoire
 +
 +Il faut d'​abord s'​inscrire sur SNDS:
 +
 +Accès à SNDS https://​postmaster.live.com/​snds
 +
 +Accès à JMRP : https://​postmaster.live.com/​snds/​JMRP.aspx
 +==== Spf ====
 +
 +Il suffit de rajouter une entrée dns adéquate
 +
 +
 +==== Dkim ====
 +
 +ref: https://​www.digitalocean.com/​community/​tutorials/​how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy
 +
 +ref: https://​www.skyminds.net/​serveur-dedie-ajouter-lauthentification-spf-sender-id-et-dkim-a-postfix-et-bind9-avec-opendkim/​
 +
 +installer opendkim
 +
 +Configurer :
 +  * Mode ( on vérifie, on signe, on fait les 2 )
 +  * Décommenter keytable (fichier d'​association domaine / clé de signature)
 +  * Décommenter SigningTable (fichier d'​association domaine / clé )
 +  * Décommenter TrustedHost (liste des ip / domaines autorisés)
 +
 +
 +Créer la paire de clé dans /​etc/​opendkim/​keys à l'aide de la commande
 +<​code>​
 +opendkim-genkey -s mail -d domaine.com
 +</​code>​
 +
 +Rajouter une entrée DNS en vous inspirant du fichier //
 +/​etc/​opendkim/​keys/​mail.txt //
 +
 +Configurer postfix:
 +// /​etc/​postfix/​main.cf //
 +
 +<​code>​
 +milter_protocol ​        = 2
 +milter_default_action ​  = accept
 +smtpd_milters ​          = inet:​localhost:​8891
 +non_smtpd_milters ​      = inet:​localhost:​8891
 +</​code>​
 +
 +
 +La partie la plus délicate est le selector, qui doit correspondre:​
 +  - dans le fichier KeyTable
 +  - dans le fichier SigningKey
 +  - dans l'​enregistrement dns
 +
 +==== dmarc ====
 +
 +dmarc est une surcouche à dkim et spf permettant aux MTA sur les raisons pour lesquelles des mails ont été refusés.
 +
 +coté mta, opendmarc permet de vérifier la signature dmarc d'un message entrant. Un enregistrement dns permet de signaler que l'on souhaite obtenir des rapports de non délivrance.
 +
 +avec opendmarc on a la possibilité d'​enregistrer les requètes en échec dans /​var/​spool/​opendmarc/​opendmarc.dat et d'​utiliser opendmarc-import / report pour remplir une base de donnée. voir [[http://​www.stevejenkins.com/​blog/​2015/​03/​installing-opendmarc-rpm-via-yum-with-postfix-or-sendmail-for-rhel-centos-fedora/​|biblio]]
 +
 +
 +
 +==== Tester ====
 +
 +http://​mxtoolbox.com/​
 +
 +http://​www.appmaildev.com
 +
 +==== Débugguer ====
 +
 +Il est possible de tracer avec plus ou moins de détails les mails en provenance (ou à destination) d'​adresses spécifiques,​ en s'​assurant d'​avoir les directives de configuration suivante dans votre // /​etc/​main.cf//​ :
 +
 +//​debug_peer_list//​ étant la liste des destinataires / expéditeurs à surveiller.
 +
 +<​code>​
 +debug_peer_level = 2
 +
 +# The debug_peer_list parameter specifies an optional list of domain
 +# or network patterns, /file/name patterns or type:name tables. When
 +# an SMTP client or server host name or address matches a pattern,
 +# increase the verbose logging level by the amount specified in the
 +# debug_peer_level parameter.
 +#
 +
 +debug_peer_list = 193.49.39.253
 +#​debug_peer_list = some.domain
 +
 +# The debugger_command specifies the external command that is executed
 +# when a Postfix daemon program is run with the -D option.
 +#
 +# Use "​command .. & sleep 5" so that the debugger can attach before
 +# the process marches on. If you use an X-based debugger, be sure to
 +# set up your XAUTHORITY environment variable before starting Postfix.
 +#
 +debugger_command =
 + PATH=/​bin:/​usr/​bin:/​usr/​local/​bin:/​usr/​X11R6/​bin
 + ddd $daemon_directory/​$process_name $process_id & sleep 5
 +</​code>​
 +
 +==== SSL ====
 +
 +Générer un certificat ( par exemple letsencrypt)
 +Dans master.cf, décommenter la partie ^submission et ^smtps
 +
 +Rajouter dans main.cf:
 +<​code>​
 +smtpd_tls_cert_file ​            = /​etc/​letsencrypt/​live/​courrier.opendoor.fr/​cert.pem
 +smtpd_tls_key_file ​             = /​etc/​letsencrypt/​live/​courrier.opendoor.fr/​privkey.pem
 +</​code>​
 +
 +Enjoy
 +
 +# vim: set filetype=dokuwiki:​
  
postfix.txt · Dernière modification: 2018/02/23 10:07 (modification externe)