Outils pour utilisateurs

Outils du site


postfix

Postfix

Biblio / sources

Filtrage

Amavis

installer amavis

rajouter dans etc/postfix/main.cf:

content_filter = amavis:[127.0.0.1]:10024

Exécuter:

postfix-add-filter amavis 10025

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 :

$final_virus_destiny      = D_BOUNCE;
adduser clamav amavis

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:

aptitude install postgrey
vim /etc/postfix/main.cf

smtpd_recipient_restrictions =
   check_policy_service inet:127.0.0.1:60000
   reject_unauth_destination
 /etc/init.d/postfix reload

Stats:

A faire sur un vieux fichier de log pour plus de précision:

 postgreyreport --show_tries --nosingle_line  /var/log/mail.log.0

Obtenir la liste des serveurs ajoutés automatiquement sur liste blanche:

[[:sudo|sudo]]perl /usr/share/doc/postgrey_clients_dump

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

Tester les regles sans risque:

rajouter dans main.cf:

 warn_if_reject reject_... 

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:

smtpd_sender_restrictions =
   check_sender_access hash:/etc/postfix/list

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:

# 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

attention avec le whitelisting qui, trop permissif, peut amener à la configuration d'un [Openrelay]

# vim: set filetype=dokuwiki:

SMTP Auth

Dans main.cf rajouter

smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients        = yes
smtpd_recipient_restrictions    =
   permit_mynetworks
   permit_sasl_authenticated
   reject_unauth_destination

Créer le fichier /etc/sasl2/smtpd.conf:

pwcheck_method: saslauthd
mech_list: plain login

tester avec telnet: L'astuce, c'est que le username et le mot de passe sont encodés en base64 (echo -n username | base64 )

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

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

opendkim-genkey -s mail -d domaine.com

Rajouter une entrée DNS en vous inspirant du fichier /etc/opendkim/keys/mail.txt

Configurer postfix: /etc/postfix/main.cf

milter_protocol         = 2
milter_default_action   = accept
smtpd_milters           = inet:localhost:8891
non_smtpd_milters       = inet:localhost:8891

La partie la plus délicate est le selector, qui doit correspondre:

  1. dans le fichier KeyTable
  2. dans le fichier SigningKey
  3. 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 biblio

Tester

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.

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

SSL

Générer un certificat ( par exemple letsencrypt) Dans master.cf, décommenter la partie ^submission et ^smtps

Rajouter dans main.cf:

smtpd_tls_cert_file             = /etc/letsencrypt/live/courrier.opendoor.fr/cert.pem
smtpd_tls_key_file              = /etc/letsencrypt/live/courrier.opendoor.fr/privkey.pem

Enjoy

# vim: set filetype=dokuwiki:

postfix.txt · Dernière modification: 2018/02/23 10:07 (modification externe)