
Конфигурация моего почтового сервера довольно строгая, и иногда входящие письма с легальных серверов отклоняются из-за проблем с конфигурацией на удаленной стороне, распространенной из которых является имя хоста HELO.
У меня есть конкретный пример от крупнейшей электроэнергетической компании Италии ENEL, которая, по-видимому, отправляет транзакционные электронные письма с именем хоста HELO, которое не разрешается:
Feb 20 18:31:10 MYHOST postfix/smtpd[1748649]: NOQUEUE: reject: RCPT from mxrelay6.enel.com[146.133.127.102]: 450 4.7.1 <smtprelay.enel.com>: Helo command rejected: Host not found; from=<[email protected]> to=<MY CLIENT EMAIL> proto=ESMTP helo=<smtprelay.enel.com>
Я пытаюсь добавить это в белый список, IP-адреса или имена хостов сервера smtp кажутся логичным шагом (я заметил два, но я мог бы использовать регулярное выражение). В любом случае, в настоящее время я не могу, все, что я пробую, не работает, и эти письма всегда отклоняются. (У меня есть и другие похожие случаи).
##
# Helo restrictions
smtpd_delay_reject = yes
smtpd_helo_required = yes
smtpd_helo_restrictions =
permit_mynetworks,
warn_if_reject check_helo_access hash:/etc/postfix/helo_whitelist,
warn_if_reject reject_invalid_hostname,
warn_if_reject reject_unknown_hostname,
warn_if_reject reject_non_fqdn_helo_hostname,
warn_if_reject reject_unknown_helo_hostname,
warn_if_reject reject_invalid_helo_hostname,
permit
##
# Sender restrictions
smtpd_sender_restrictions =
permit_mynetworks,
check_client_access hash:/etc/postfix/sender_whitelist,
reject_non_fqdn_sender,
reject_unknown_sender_domain,
reject_unknown_address,
reject_unknown_reverse_client_hostname,
reject_unknown_client_hostname,
permit
##
# Recipient restrictions
smtpd_recipient_restrictions =
permit_mynetworks,
reject_unauth_pipelining,
reject_unauth_destination,
reject_invalid_hostname,
reject_unknown_hostname,
reject_unknown_reverse_client_hostname,
reject_unknown_sender_domain,
reject_unknown_recipient_domain,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
check_sender_access hash:/etc/postfix/sender_access,
#check_client_access hash:/etc/postfix/rbl_whitelist,
check_policy_service unix:private/policyd-spf,
#check_client_access hash:/etc/postfix/rbl_override
reject_rhsbl_helo dbl.spamhaus.org,
reject_rhsbl_reverse_client dbl.spamhaus.org,
reject_rhsbl_sender dbl.spamhaus.org,
reject_rbl_client zen.spamhaus.org,
#reject_rbl_client cbl.abuseat.org
#reject_rbl_client b.barracudacentral.org,
#reject_rbl_client bl.spamcop.net,
#reject_rbl_client zen.spamhaus.org=127.0.0.[2..11],
#reject_rbl_client b.barracudacentral.org=127.0.0.[2..11],
#check_policy_service unix:/var/spool/postfix/postgrey/socket,
permit
smtpd_relay_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
##
# Data restrictions
smtpd_data_restrictions =
reject_unauth_pipelining,
permit
helo_whitelist
mxrelay7.enel.com OK
mxrelay6.enel.com OK
Я пробовал вставить в helo_whitelist фактическое имя хоста HELO smtprelay.enel.com
, но это не работает. Я также видел в документации использование PERMIT вместо OK, но, просматривая отладочные сообщения (я использовал debug_peer_list), похоже, что это неправильно.
Однако, просматривая отладку, я вижу, что отклонение происходит из-за ограничений адреса получателя:
Feb 20 18:41:12 alice postfix/smtpd[1749156]: reject_invalid_hostname: smtprelay.enel.com
Feb 20 18:41:12 alice postfix/smtpd[1749156]: generic_checks: name=reject_invalid_hostname status=0
Feb 20 18:41:12 alice postfix/smtpd[1749156]: generic_checks: name=reject_unknown_hostname
Feb 20 18:41:12 alice postfix/smtpd[1749156]: reject_unknown_hostname: smtprelay.enel.com
Feb 20 18:41:12 alice postfix/smtpd[1749156]: lookup smtprelay.enel.com type A flags
Feb 20 18:41:12 alice postfix/smtpd[1749156]: dns_query: smtprelay.enel.com (A): Host not found
Feb 20 18:41:12 alice postfix/smtpd[1749156]: lookup smtprelay.enel.com type AAAA flags
Feb 20 18:41:12 alice postfix/smtpd[1749156]: dns_query: smtprelay.enel.com (AAAA): Host not found
Feb 20 18:41:12 alice postfix/smtpd[1749156]: lookup smtprelay.enel.com type MX flags
Feb 20 18:41:12 alice postfix/smtpd[1749156]: dns_query: smtprelay.enel.com (MX): Host not found
Feb 20 18:41:12 MYHOST postfix/smtpd[1749156]: NOQUEUE: reject: RCPT from mxrelay6.enel.com[146.133.127.102]: 450 4.7.1 <smtprelay.enel.com>: Helo command rejected: Host not found; from=<[email protected]> to=<MY CLIENT EMAIL> proto=ESMTP helo=<smtprelay.enel.com>
Feb 20 18:41:12 alice postfix/smtpd[1749156]: generic_checks: name=reject_unknown_hostname status=2
Feb 20 18:41:12 alice postfix/smtpd[1749156]: >>> END Recipient address RESTRICTIONS <<<
Вопрос в том, почему раздел smtpd_recipient_restrictions должен проверять имя хоста helo? Или это просто отложенная проверка из-за smtpd_delay_reject?
Где и как мне следует размещать сообщения Helo, занесенные в белый список?
Спасибо!
решение1
Вы можете просто удалить дублирующиеся проверки reject_unknown_hostname
/ reject_unknown_hostname
, поскольку ваши ограничения helo/ehlo применяются в любом случае, пока вы сохраняете smtpd_helo_required=yes
.
Затем измените свой список обратно, как настроено с помощью check_хело_access должен содержатьхелозначения - это сделано намеренно, чтобы не допустить внесения в белый список (непроверенных) имен хостов.
Кстати, это устаревшие псевдонимы, всегда используйте текущие, которые более четко описывают, что именно проверяется:
reject_unknown_hostname => reject_unknown_helo_hostname
reject_invalid_hostname => reject_invalid_helo_hostname