Как исправить ошибку Postfix «Доступ к ретранслятору запрещен»?

Как исправить ошибку Postfix «Доступ к ретранслятору запрещен»?

Сегодня утром, чтобы исправить проблему с несовпадением имени в сертификате безопасности, я выполнил рекомендуемые действия изКак исправить SSL почтового сервера?, но теперь при попытке отправить электронное письмо из клиента (в данном случае клиентом является Windows Mail) я получаю следующую ошибку.

Отклоненный адрес электронной почты был '[email protected]'. Тема 'Это тест.', Учетная запись: 'mail.domain.com', Сервер: 'mail.domain.com', Протокол: SMTP, Ответ сервера: '554 5.7.1: Доступ к ретрансляции запрещен', Порт: 25, Защита (SSL): Нет, Ошибка сервера: 554, Номер ошибки: 0x800CCC79

Редактировать: Я все еще могу получать письма из этой учетной записи и отправлять письма на другие учетные записи в том же домене. Я просто не могу отправлять письма получателям за пределами нашего домена.

Я попробовал полностью отключить TLS, но безрезультатно, ошибка все равно та же.

Когда я проверяю файл mail.log, я вижу следующее.

Jul 18 08:24:41 company imapd: LOGIN, [email protected], ip=[::ffff:111.111.11.11], protocol=IMAP
Jul 18 08:24:42 company imapd: DISCONNECTED, [email protected], ip=[::ffff:111.111.11.11], headers=0, body=0, rcvd=83, sent=409, time=1
Jul 18 08:25:19 company postfix/smtpd[29282]: connect from company.university.edu[111.111.11.11]
Jul 18 08:25:19 company postfix/smtpd[29282]: NOQUEUE: reject: RCPT from company.university.edu[111.111.11.11]: 554 5.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<UserPC>
Jul 18 08:25:19 company postfix/smtpd[29282]: disconnect from company.university.edu[111.111.11.11]
Jul 18 08:25:22 company imapd: DISCONNECTED, [email protected], ip=[::ffff:111.111.11.11], headers=13, body=142579, rcvd=3289, sent=215892, time=79

Файл main.cfвыглядит так:

#
# Postfix MTA Manager Main Configuration File;
#
# Please do NOT edit this file manually;
#

#
# Postfix directory settings; These are critical for normal Postfix MTA functionallity;
#

command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
program_directory = /usr/lib/postfix

#
# Some common configuration parameters;
#

inet_interfaces = all
mynetworks = 127.0.0.0/8
mynetworks_style = host

myhostname = mail.domain.com
mydomain = domain.com
myorigin = $mydomain

smtpd_banner = $myhostname ESMTP 2.4.7.1 (Debian/GNU)
setgid_group = postdrop

#
# Receiving messages parameters;
#

mydestination = localhost, company 
append_dot_mydomain = no
append_at_myorigin = yes
transport_maps = mysql:/etc/postfix/transport.cf

#
# Delivering local messages parameters;
#

mail_spool_directory = /var/spool/mail
mailbox_size_limit = 0
mailbox_command = procmail -a "$EXTENSION"

biff = no

alias_database = hash:/etc/aliases

local_recipient_maps =

#
# Delivering virtual messages parameters;
#
virtual_mailbox_maps=mysql:/etc/postfix/mysql_virt.cf
virtual_uid_maps=mysql:/etc/postfix/uids.cf
virtual_gid_maps=mysql:/etc/postfix/gids.cf
virtual_mailbox_base=/usr/local/virtual
virtual_maps=mysql:/etc/postfix/virtual.cf
virtual_mailbox_domains=mysql:/etc/postfix/virtual_domains.cf


#
# SASL paramters;
#
smtp_use_tls = yes
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s

smtp_tls_CAfile = /etc/postfix/ssl/smptd.pem
smtp_tls_cert_file = /etc/postfix/ssl/smptd.crt
smtp_tls_key_file = /etc/postfix/ssl/smptd.key

smtpd_tls_CAfile = /etc/postfix/ssl/smptd.pem
smtpd_tls_cert_file = /etc/postfix/ssl/smptd.crt
smtpd_tls_key_file = /etc/postfix/ssl/smptd.key

smtpd_sasl_auth_enable = yes

smtpd_sasl_security_options = noanonymous

smtpd_sasl_local_domain =

broken_sasl_auth_clients = yes

smtpd_sender_restrictions =
        permit_sasl_authenticated
        permit_mynetworks

smtpd_recipient_restrictions =
        permit_sasl_authenticated
        check_recipient_access hash:/etc/postfix/filtered_domains
        permit_mynetworks
        reject_unauth_destination

Кстати, мой работодатель хочет иметь возможность отправлять электронные письма от клиентов (Thunderbird и Outlook) как из нашей локальной сети, так и из-за ее пределов.

решение1

TLS просто включает шифрование в сеансе SMTP и не влияет напрямую на то, будет ли разрешено Postfix ретранслировать сообщение.

Сообщение об отказе в ретрансляции возникает из-за smtpd_recipient_restrictionsнесоответствия правилам. Для пропуска сообщения должно быть выполнено одно из этих условий:

smtpd_recipient_restrictions =
    permit_sasl_authenticated
    check_recipient_access hash:/etc/postfix/filtered_domains
    permit_mynetworks
    reject_unauth_destination

Объясним эти правила:

permit_sasl_authenticated

разрешает аутентифицированных отправителей через SASL. Это будет необходимо для аутентификации пользователей за пределами вашей сети, которые обычно блокируются.

check_recipient_access

Это заставит postfix искать /etc/postfix/filtered_domainsправила на основе адреса получателя. (Судя по имени файла, он, вероятно, просто блокирует определенные домены... Проверьте, указан ли там gmail.com?)

permit_mynetworks

Это разрешит хостам по IP-адресам, которые соответствуют диапазонам IP-адресов, указанным в $mynetworks. В опубликованном вами main.cf $mynetworksбыло установлено значение 127.0.0.1, поэтому он будет ретранслировать только электронные письма, сгенерированные самим сервером.

На основе этой конфигурации ваш почтовый клиент должен будет использовать аутентификацию SMTP, прежде чем ему будет разрешено ретранслировать сообщения. Я не уверен, какую базу данных использует SASL. Это указано в /usr/lib/sasl2/smtpd.conf. Предположительно, он также использует ту же базу данных, что и ваши виртуальные почтовые ящики, поэтому вы должны иметь возможность включить аутентификацию SMTP в своем почтовом клиенте и быть готовым.

решение2

smtpd_use_tls = no

Вы отключили TLS, поэтому теперь вам нужно авторизовать свою локальную сеть, добавив ее в mynetworks. Например,

mynetworks = 192.168.1.0/24 127.0.0.0/8

Это исправит отправку только из вашей локальной сети. Для отправки электронной почты из-за пределов вашей локальной сети вам нужно будет заставить работать аутентификацию TLS.

решение3

Я думаю, что вы пропустили domain.com в mydestination, так как это значение по умолчанию relay_domains=$mydestination, поэтому вы можете добавить в свою конфигурацию строку:

mydestinations = $mydomain, $myhostname, localhost, localhost.localdomain

или:

relay_domains = $mydomain

Не забывайте перезапускать сервер Postfix ( service postfix restart) каждый раз после редактирования файла конфигурации Postfix.

решение4

У меня была та же проблема в Outlook (с dovecote и postfix backend), и я потратил два дня на поиск решения и настройку своих конфигурационных файлов. Все, что мне нужно было сделать, это проверить "Server required authentication" на вкладке Исходящие в настройках почты в Outlook, и мои сообщения теперь отправляются в Gmail. Подробную инструкцию о том, как найти эту настройку, см. здесьhttp://support.bluetie.com/node/440.

Связанный контент