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

Проверка отправителя Postfix 550

У меня есть Postfix и Dovecot, установленные на VPS и настроенные для пересылки почты на адрес Gmail и приема SMTP-запросов от Gmail, чтобы он мог отправлять сообщения от имени этого домена. TLS и аутентификация работают, почта приходит, MX домены, SPR, DKIM, SPF, все настроено и работает.

Однако я могу отправлять электронную почту только себе и некоторым доменам. Например:

This is the mail system at host tomjn.com.

I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.

For further assistance, please send mail to postmaster.

If you do so, please include this problem report. You can
delete your own text from the attached returned message.

                   The mail system

<matt@geekmatt.com>: host dc-cd3425bc.geekmatt.com[87.106.180.26] said:
    550-Verification failed for <contact@tomjn.com> 550-The mail server could
    not deliver mail to contact@tomjn.com.  The account or domain may not
    exist, they may be blacklisted, or missing the proper dns entries. 550
    Sender verify failed (in reply to RCPT TO command)

Final-Recipient: rfc822; matt@geekmatt.com
Original-Recipient: rfc822;matt@geekmatt.com
Action: failed
Status: 5.0.0
Remote-MTA: dns; dc-cd3425bc.geekmatt.com
Diagnostic-Code: smtp; 550-Verification failed for <contact@tomjn.com> 550-The
    mail server could not deliver mail to contact@tomjn.com.  The account or
    domain may not exist, they may be blacklisted, or missing the proper dns
    entries. 550 Sender verify failed

Я не знаю, что делать дальше. Это удаленный сервер говорит "нет" моему? Моя говорит нет удаленному серверу?

Я поискал подтверждение адреса и нашел это:

http://ftp.netbsd.org/pub/NetBSD/NetBSD-current/src/external/ibm-public/postfix/dist/html/ADDRESS_VERIFICATION_README.html#caching

Однако это неоднозначно, когда он говорит, что получатель говорит об удаленном сервере, получающем электронное письмо? Мой сервер получает запрос на подтверждение? Удаленный сервер получает запрос на проверку? Имеется в виду отправитель электронного письма или отправитель запроса на проверку? Это четко не указано. Поиск в Google привел к появлению нескольких вопросов с ответами типа «это плохая идея, всем следует прекратить ее использовать» людям, которые исправили свою проблему, вызванную использованием чего-то, что я не использую (например, SRS).

Письма на адрес check-auth@verifier.port25.com не вызывают ответа.

Вот мой 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.

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
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
smtpd_sasl_auth_enable = yes
smtpd_helo_required = yes
#smtpd_pw_server_security_options = cram-md5,digest-md5,login,plain
#content_filter = smtp-amavis:[127.0.0.1]:10024
#smtpd_helo_restrictions = reject_non_fqdn_helo_hostname reject_invalid_helo_hostname


smtpd_tls_cert_file=/etc/ssl/certs/dovecot.pem
smtpd_tls_key_file=/etc/ssl/private/dovecot.pem
smtpd_use_tls=yes
smtpd_tls_auth_only = yes

smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_sasl_authenticated

smtpd_client_restrictions =
          permit_mynetworks
          permit_sasl_authenticated
          REJECT
virtual_transport = lmtp:unix:private/dovecot-lmtp

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


smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = tomjn.com
virtual_alias_domains = tomjn.com tomjn.co.uk
#alias_maps = 
#alias_database = hash:/etc/aliases
myorigin = /etc/mailname

virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf

#mydestination = localhost.com, , localhost
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 216.239.32.0/19 64.233.160.0/19 66.249.80.0/20 72.14.192.0/18 209.85.128.0/17 66.102.0.0/20 74.125.0.0/16 64.18.0.0/20 207.126.144.0/20 173.194.0.0/16 [2001:4860:4000::]/36 [2404:6800:4000::]/36 [2607:f8b0:4000::]/36 [2800:3f0:4000::]/36 [2a00:1450:4000::]/36 [2c0f:fb50:4000::]/36
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

milter_protocol = 2
milter_default_action = accept

smtpd_milters = inet:localhost:12301
non_smtpd_milters = inet:localhost:12301

примечание: да, я знаю о приложениях Google, да, DNS настроен правильно, нет, я использую Dovecot только для TLS, а не IMAP / POP3, да, существует matt@geekmatt.com

Да, это называется проверкой отправителя. Проверка была произведена почтовым сервером geekmatt.com, а не вашим. И на основании сообщения об ошибке могу сделать вывод, что

550-Verification failed for <contact@tomjn.com> 550-The mail server could
not deliver mail to contact@tomjn.com.  The account or domain may not
exist, they may be blacklisted, or missing the proper dns entries. 550
Sender verify failed

было стандартное сообщение об ошибке exim.

Кстати, не вся проверка отправителя была плохой. Для объяснения я предполагаю, что вы хотите отправить электронное письмо ОТ example.com НА example.net.

  1. На базовом уровне почтовый сервер example.net должен проверять, существует ли домен отправителя. Если почтовый сервер отклонил вашу электронную почту на этом уровне, то в вашем домене 1) нет DNS MX и нет записи DNS A, или 2) неправильно сформированная запись MX, например, запись с именем хоста MX нулевой длины. В постфиксе эквивалентным параметром является reject_unknown_sender_domain

  2. На продвинутом уровне почтовый сервер попытается проверить, существует ли адрес отправителя. Обычно, прежде чем принять вашу электронную почту, почтовый сервер example.net попытается telnet на ваш почтовый сервер без отправки электронной почты. Эта проверка была признана недействительной из-за некоторые причины.


Теперь похоже, что домен tomjn.com не прошел проверку отправителя на базовом уровне. Здесь MX-запись tomjn.com

% dig tomjn.com MX +short
1 178.62.28.136.tomjn.com.
% dig 178.62.28.136.tomjn.com

; <<>> DiG 9.9.5 <<>> 178.62.28.136.tomjn.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, **status: NXDOMAIN,** id: 52812
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;178.62.28.136.tomjn.com.       IN      A

;; AUTHORITY SECTION:
tomjn.com.              1800    IN      SOA     NS1.DIGITALOCEAN.com. hostmaster.tomjn.com. 1410110590 3600 900 1209600 1800

Там ваша запись MX не имеет действительной записи A. Таким образом, geekmatt.com отклонит вашу электронную почту.

Решение: исправить вашу запись MX