Я создал веб-приложение, но когда оно пытается отправить электронное письмо это не удается. Postfix записывает в свой mail.log следующее:
postfix/smtpd[22261]: warning: hostname srv.eastinc.nl does not resolve to address 192.168.3.101
postfix/smtpd[22261]: connect from unknown[192.168.3.101]
postfix/smtpd[22261]: NOQUEUE: reject: RCPT from unknown[192.168.3.101]: 554 5.7.1 <someaddress@gmail.com>: Relay access denied; from=<Domain@eastinc.nl> to=<someaddress@gmail.com> proto=ESMTP helo=<domain.eastinc.nl>
postfix/smtpd[22261]: disconnect from unknown[192.168.3.101]
Я совершенно уверен, что srv.eastinc.nl разрешается как 192.168.3.101, потому что так говорит nslookup. Конфигурация Postfix:
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
delay_warning_time = 2h
home_mailbox = Maildir/
inet_interfaces = all
mailbox_size_limit = 0
mydestination = eastinc.nl, mail.eastinc.nl, srv.eastinc.nl, localhost.eastinc.nl, localhost
myhostname = mail.eastinc.nl
mynetworks = localhost 192.168.3.101 127.0.0.1 srv.eastinc.nl
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relayhost = smtp.ziggo.nl:25
smtp_always_send_ehlo = yes
smtp_sasl_auth_enable = no
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_recipient_restrictions = permit_sasl_authenticated, reject_unauth_destination
smtpd_sender_restrictions = reject_unknown_sender_domain
smtpd_tls_cert_file = /etc/ssl/certs/mailcert.pem
smtpd_tls_key_file = /etc/ssl/private/mail.key
smtpd_tls_protocols = !SSLv2, !SSLv3
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
Если я правильно понимаю, и 192.168.3.101, и srv.eastinc.nl должны иметь возможность ретранслировать почту через Postfix. Есть идеи, как заставить это работать?
У вас есть следующие ограничения в ваша конфигурация:
smtpd_recipient_restrictions = permit_sasl_authenticated, reject_unauth_destination
smtpd_sender_restrictions = reject_unknown_sender_domain
Разрешить запрос, когда клиент успешно аутентифицирован по протоколу RFC 4954 (AUTH).
Отклонить запрос, если не выполняется одно из следующих условий:
Postfix является пересылкой почты: разрешенный домен RCPT TO соответствует $ relay_domains или его поддомену и не содержит маршрутизации, указанной отправителем (user @ elsewhere @ domain),
Postfix - это конечный пункт назначения: разрешенный домен RCPT TO совпадает с $ mydestination, $ inet_interfaces, $ proxy_interfaces, $ virtual_alias_domains или $ virtual_mailbox_domains и не содержит (скрытую) маршрутизацию, указанную отправителем, запрос, когда Postfix не является конечным адресатом адрес отправителя, а домен MAIL FROM не имеет 1) DNS MX и DNS A записи, или 2) искаженной записи MX, такой как запись с именем хоста MX нулевой длины (Postfix версии 2.3 и новее).
Ответ указывается с параметром unknown_address_reject_code (по умолчанию: 450), unknown_address_tempfail_action (по умолчанию: defer_if_permit) или 550 (nullmx, Postfix 3.0 и новее). Подробности см. В описании соответствующих параметров.
Итак, я предполагаю: тот, кто подключается с хоста 192.168.3.101 (это сам сервер?), Отправляет почту без аутентификации (в журнале нет ничего об аутентификации).Поэтому для этого вам необходимо следующее ограничение:
Разрешить запрос, когда IP-адрес клиента совпадает с любым сетевым или сетевым адресом, указанным в $ mynetworks.
Добавьте smtpd_recipient_restrictions
к ] allow_mynetworks
.
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
Официальная документация: ACCESS README
UDP
Иногда это действительно плохо для allow_mynetworks
, потому что любой хост из $ mynetworks
] может отправлять письма без аутентификации.
Так что лучше отправлять письма через smtp с авторизацией из вашего приложения и не использовать функции sendmail () / mail ()
Недавно я столкнулся с такой же проблемой при отправке электронной почты из клиента Windows Outlook.
Примечание.:Эта ошибка возникает, в частности, при отправке электронной почты с помощью настольного приложения Outlook.
Ниже приведено сообщение об ошибке, найденное в /var/log/mail.log при отправке электронных писем из агента Outlook.
NOQUEUE: reject: RCPT from unknown[XXX.XXX.XXX.XXX]: 450 4.7.1 <DESKTOPOABC123>: Helo command rejected: Host not found; from=<abc123@example.org> to=<user1@exampleoutside.com> proto=ESMTP helo=<DESKTOPOABC123>
Чтобы устранить проблему, я сделал ниже сообщение о действиях, позволяющих отправлять электронную почту через агент Outlook.
Шаг 1: в файле /etc/postfix/main.cf закомментирован следующий пункт в параметре «smtpd_recipient_restrictions».
Шаг 2:перезапустил агент службы postfix.
$ sudo systemctl restart postfix