Назад | Перейти на главную страницу

Постфикс: отклонить reject_unknown_recipient_domain и получить мгновенное уведомление по электронной почте

когда электронное письмо отправляется несуществующему домену или получателю, я хотел бы, чтобы отправитель немедленно получил электронное письмо от почтового демона, информирующее о том, что получатель не существует.

На самом деле в моей системе происходит то, что электронное письмо попадает в отложенную очередь и остается там время, указанное в конфигурации. Как я установил delay_warning_time = 30m через 30 минут в очереди отправитель получает уведомление, но это не то, что мне нужно для несуществующих адресов. Я бы хотел немедленно отклонить электронное письмо и уведомить отправителя.

Кто-нибудь знает, что я делаю не так? большое спасибо

В настоящее время электронные письма несуществующих получателей находятся в очереди постфиксов:

# mailq
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
AA6CA48DCC     1496 Wed Feb 12 12:56:36  user@domain.com
         (connect to mx.email-srv.com[199.231.85.98]:25: Connection timed out)
                                         foo@gmai.com

6FF9948DFF     1498 Wed Feb 12 13:07:04  user@domain.com
         (connect to mx.email-srv.com[199.231.85.98]:25: Connection timed out)
                                         foo@gmai.com

Вот моя конфигурация Postfix:

2bounce_notice_recipient = $delay_notice_recipient
alias_database = hash:/etc/postfix/aliases
alias_maps = hash:/etc/postfix/aliases
broken_sasl_auth_clients = no
command_directory = /usr/sbin
config_directory = /etc/postfix
content_filter = amavis:[127.0.0.1]:10024
daemon_directory = /usr/lib/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
delay_notice_recipient = admin
delay_warning_time = 30m
disable_vrfy_command = yes
header_checks = regexp:/etc/postfix/header_checks
html_directory = no
inet_interfaces = all
inet_protocols = all
local_recipient_maps =
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
masquerade_domains = mail.domain.es mail.domain.com hostname.domain.es hostname.domain.com
maximal_backoff_time = 8000s
maximal_queue_lifetime = 5d
milter_default_action = accept
milter_protocol = 2
minimal_backoff_time = 1000s
mydestination =
mydomain = domain.es
myhostname = mail.domain.es
mynetworks_style = host
myorigin = domain.es
newaliases_path = /usr/bin/newaliases.postfix
non_smtpd_milters = $smtpd_milters
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
relayhost =
relocated_maps = mysql:/etc/postfix/mysql_relocated.cf
sample_directory = /usr/share/doc/postfix-2.6.6/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtp_helo_timeout = 60s
smtp_tls_CAfile = /etc/ssl/certs/sf_bundle.crt
smtp_tls_note_starttls_offer = yes
smtp_tls_security_level = may
smtp_use_tls = yes
smtpd_banner = $myhostname ESMTP $mail_name
smtpd_client_restrictions = reject_rbl_client sbl.spamhaus.org, reject_rbl_client blackholes.easynet.nl, reject_rbl_client dnsbl.njabl.org
smtpd_data_restrictions = reject_unauth_pipelining
smtpd_delay_reject = yes
smtpd_hard_error_limit = 12
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks, permit_sasl_authenticated, warn_if_reject reject_non_fqdn_hostname, reject_invalid_hostname, permit
smtpd_milters = inet:localhost:8891
smtpd_recipient_limit = 16
smtpd_recipient_restrictions = reject_unauth_pipelining, permit_mynetworks, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unauth_destination, reject_unknown_helo_hostname, permit_sasl_authenticated, permit
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain =
smtpd_sasl_security_options = noanonymous
smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks, warn_if_reject reject_non_fqdn_sender, reject_unknown_sender_domain, reject_unauth_pipelining, permit
smtpd_soft_error_limit = 3
smtpd_tls_cert_file = /etc/ssl/certs/domain.es.crt
smtpd_tls_key_file = /etc/ssl/private/domain.key
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_security_level = may
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
transport_maps = mysql:/etc/postfix/mysql_transport.cf
transport_retry_time = 30s
unknown_local_recipient_reject_code = 450
virtual_alias_maps = mysql:/etc/postfix/mysql_alias.cf
virtual_gid_maps = static:5000
virtual_mailbox_base = /var/spool/mail/virtual
virtual_mailbox_domains = mysql:/etc/postfix/mysql_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_mailbox.cf
virtual_uid_maps = static:5000

Каким образом postfix должен знать, что адрес электронной почты не существует, или удаленный сервер просто недоступен (как, кажется, в случае с застрявшей в очереди почтой). Обычно postfix будет пытаться отправить письмо, но если он не получит окончательный ответ от удаленного сервера, обычно это 550 ответов (450 диапазонов означают, что они временно недоступны), postfix не может определить, существует ли электронное письмо или нет. это еще одна проблема, которая может позволить успешно доставить электронное письмо позже.