7 votes

Refuser d'envoyer des e-mails à des destinataires spécifiques avec Postfix

Donc, en ce moment, je suis à mi-chemin en essayant de mettre en place une liste noire de courrier sortant, par le biais de smtpd_recipient_restrictions .

Le problème que je rencontre est que mes courriels de test sont livrés alors que je m'attends à ce qu'ils soient rejetés par le système.

Voici le /etc/postfix/main.cf

# See /usr/share/postfix/main.cf.dist for a commented, more complete version

# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

smtpd_recipient_restrictions =
        reject_unknown_recipient_domain,
        reject_unauth_destination,
        check_recipient_access hash:/etc/postfix/recipient_block

myhostname = hostname.domain.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = hostname.domain.com, hostname.domain.com, , localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

Mon /etc/postfix/recipient_block (ceci a été exécuté par postmap ensuite)

personalemail@anotheroneofmydomains.com REJECT

Et ensuite, j'envoie l'email de test comme ça :

$ echo test | mail -s "test email, please ignore" personalemail@anotheroneofmydomains.com

Postfix a été rechargé, a été redémarré plusieurs fois pour essayer de résoudre le problème, mais en vain.

Un morceau de la queue de la /var/log/mail.log se lit comme suit :

Sep 25 02:27:17 antares postfix/master[3024]: reload -- version 2.7.0, configuration /etc/postfix
Sep 25 02:27:27 antares postfix/pickup[3104]: C723018770: uid=1001 from=<obsidian>
Sep 25 02:27:27 antares postfix/cleanup[3110]: C723018770: message-id=<20110925092727.C723018770@hostname.domain.com>
Sep 25 02:27:27 antares postfix/qmgr[3105]: C723018770: from=<obsidian@hostname.domain.com>, size=388, nrcpt=1 (queue active)
Sep 25 02:27:28 antares postfix/smtp[3112]: C723018770: to=<personalemail@anotheroneofmydomains.com>, relay=ASPMX.L.GOOGLE.COM[74.125.47.26]:25, delay=0.35, delays=0.01/0.01/0.12/0.21, dsn=2.0.0, status=sent (250 2.0.0 OK 1316942848 j50si8227610yhe.128)
Sep 25 02:27:28 antares postfix/qmgr[3105]: C723018770: removed

...Donc, je suis perplexe. Je ne vois pas pourquoi l'email n'est pas étant rejeté.

6voto

mailq Points 16792

Le problème est que le courrier est envoyé par l'intermédiaire de l'application pickup (via l'interface sendmail) et il s'agit donc d'un courrier "sortant". Pour le courrier sortant, le smtpd_*_restrictions ne s'appliquent pas. Ces restrictions ne s'appliquent qu'aux courriers "entrants" qui ont été envoyés via SMTP.

Modifier Il existe même une solution fournie par Victor Duchovni (mainteneur de Postfix) : http://marc.info/?l=postfix-users&m=120155612332393&w=1

2voto

Sean Reifschneider Points 10110

Comme le dit @mailq, le programme "mail" n'injecte pas de messages via SMTP, le "smtpd_recipient_restrictions" ne s'applique qu'aux messages reçus via SMTP. Donc, par exemple, si vous exécutez ceci, vous devriez voir qu'il affiche le rejet :

printf 'ehlo hostname.domain.com\nmail from: <user@domain.com>\nrcpt to:' \
    '<personalemail@anotheroneofmydomains.com>\nquit\n' | nc localhost 25

Ceci effectue une connexion SMTP via "netcat" (généralement appelé "nc"), et devrait démontrer que le bloc est en effet en place.

Peut-être est-ce suffisant ? Si ce n'est pas le cas, le seul moyen que j'ai trouvé pour rejeter cette adresse distante est de configurer un transport qui rejette les messages qui lui sont envoyés, puis de répertorier cette adresse dans la table des transports pour qu'elle soit associée au transport qui la rejette.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X