Сценарий:
Это производственный почтовый сервер уже 4 года, содержащий около 2000 почтовых ящиков в ~ 50 доменах, и хорошо работает практически с любым другим почтовым сервером. Журналы постоянно просматриваются, и недавно возникла следующая проблема.
Редактировать 1: Ubutntu 16.04.6 - постфикс (3.1.0-3ubuntu0.3)
Проблема:
Есть почтовый сервер, который не может доставлять почту в эту систему.
Он терпит неудачу с отклонением клиентского хоста 4.7.25.
NOQUEUE: reject: RCPT from unknown[159.135.224.3]: 450 4.7.25 Client host rejected: cannot find your hostname, [159.135.224.3]
Вот как я настроил postfix, так как я хочу избежать использования ретрансляторов без обратной записи DNS.
root@mail:~# grep restrictions /etc/postfix/main.cf
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_rbl_client zen.spamhaus.org, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, check_recipient_access mysql:/etc/postfix/mysql-virtual_policy_greylist.cf, check_policy_service unix:private/policy-spf
smtpd_helo_restrictions = permit_sasl_authenticated, permit_mynetworks, check_helo_access regexp:/etc/postfix/helo_access, reject_invalid_hostname, reject_non_fqdn_hostname, reject_invalid_helo_hostname, reject_unknown_helo_hostname, check_helo_access regexp:/etc/postfix/blacklist_helo
smtpd_sender_restrictions = check_sender_access regexp:/etc/postfix/tag_as_originating.re , permit_mynetworks, permit_sasl_authenticated, check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf, check_sender_access regexp:/etc/postfix/tag_as_foreign.re, reject_unknown_sender_domain, reject_unknown_reverse_client_hostname, check_client_access hash:/etc/postfix/client_access, reject_unknown_client_hostname
smtpd_client_restrictions = check_client_access mysql:/etc/postfix/mysql-virtual_client.cf
НО у него есть действующий тест, который выполняется локально на почтовом сервере:
Тесты DNS на 159.135.224.3
root@mail:~# nslookup 159.135.224.3
Server: 1.1.1.1
Address: 1.1.1.1#53
Non-authoritative answer:
3.224.135.159.in-addr.arpa name = relay.teamgioia.it.
Authoritative answers can be found from:
root@mail:~# dig 159.135.224.3
; <<>> DiG 9.10.3-P4-Ubuntu <<>> 159.135.224.3
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 23656
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1452
;; QUESTION SECTION:
;159.135.224.3. IN A
;; AUTHORITY SECTION:
. 10165 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2019083000 1800 900 604800 86400
;; Query time: 6 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: Fri Aug 30 12:18:21 CEST 2019
;; MSG SIZE rcvd: 117
В resolv.conf:
nameserver 1.1.1.1
nameserver 1.0.0.1
Вопросы:
Почему reject_unknown_client_hostname
работает не так, как я ожидал?
Если это не вина этого сервера, а ошибка отправителя, как я могу внести некоторых отправителей в белый список, чтобы их почта не была отклонена?
Не могли бы вы также объяснить или предположить, в чем их вина?
IP-адреса не соответствуют поисковому запросу домена.
Цитата из документация:
reject_unknown_client_hostname
Отклонить запрос, если 1) сопоставление IP-адреса клиента> имени не удается, или 2) сопоставление имени> адреса не удается, или 3) отображение имени-> адреса не соответствует IP-адресу клиента.
Если вы посмотрите IP-адрес клиента, затем снова найдите разрешенное DNS-имя и сравните его:
$ nslookup 159.135.224.3
3.224.135.159.in-addr.arpa name = relay.teamgioia.it.
$ nslookup relay.teamgioia.it.
Non-authoritative answer:
relay.teamgioia.it canonical name = mailgun.org.
Name: mailgun.org
Address: 52.2.180.207
Name: mailgun.org
Address: 52.4.250.90
Вы видите, что исходный IP-адрес не совпадает с разрешенными адресами DNS. Вот почему он не проходит проверку.