Вопрос: Как исправить Postfix '' Relay Access Denied '?


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

Отклоненный адрес электронной почты был   'Email@gmail.com. Тема «Это   контрольная работа. ', Учетная запись:' mail.domain.com ',   Сервер: «mail.domain.com», протокол:   SMTP, ответ сервера: '554 5.7.1   : Релейный доступ   denied ', Port: 25, Secure (SSL): Нет,   Ошибка сервера: 554, Номер ошибки:   0x800CCC79

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

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

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

Jul 18 08:24:41 company imapd: LOGIN, user=user_name@domain.com, ip=[::ffff:111.111.11.11], protocol=IMAP
Jul 18 08:24:42 company imapd: DISCONNECTED, user=user_name@domain.com, 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@gmail.com>: Relay access denied; from=<user_name@domain.com> to=<email@gmail.com> 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, user=user_name@domain.com, 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) как внутри нашей локальной сети, так и за ее пределами.


48
2017-07-18 14:59


Источник


Почему вы не принимаете? - Rook


Ответы:


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

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

permit_mynetworks

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

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


52
2017-07-22 20:59





smtpd_use_tls = no

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

mynetworks = 192.168.1.0/24 127.0.0.0/8

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


12
2017-07-18 15:47



Я установил smtpd_use_tls = yes, потому что мы должны иметь возможность отправлять электронную почту за пределами сети. Однако проблема сохраняется. - Noah Goodrich
Bump smtpd_tls_loglevel до 3 и посмотреть, появляется ли что-нибудь интересное в журналах (и не забудьте вернуть его до 1 или 0, когда вы закончите). - pgs
Кроме того, попробуйте настроить smtp_use_tls на no (для отправки внешнего сообщения электронной почты). Видеть postfix.org/postconf.5.html#smtp_use_tls - pgs
-1, потому что не все могут отключить tls. - jgifford25
Я не говорю, что он должен отключить tls; Я говорю, что, поскольку он уже отключил его, ему необходимо настроить mynetworks. И это полное решение - снова заставить tls работать. - pgs


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

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

или:

relay_domains = $mydomain

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


6
2017-11-20 16:54



+ 1 для добавления «localhost, localhost.localdomain» в список хостов (часто проблема в некоторых системах, непонятно, почему это не проблема для других) - Iain Collins


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


2
2018-05-10 22:29





Эта проблема исказила меня некоторое время. Я пытался подключиться с server1.domain.com на server2.domain.com.

Вот как я это исправил -

#/etc/postfix/main.cf
mydomain = server1.domain.com
myhostname = $mydomain
virtual_alias_maps = hash:/etc/postfix/virtual
alias_database = hash:/etc/postfix/virtual
myorigin = /etc/mailname
mydestination = localhost.localdomain localhost $mydomain
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

Вам также необходимо убедиться, что вы правильно установили / etc / hosts и / etc / hostname и убедитесь, что после сетевых изменений вы выполните следующие действия:

sudo service networking restart

и следующие после изменений конфигурации постфикса

sudo service postfix reload

2
2018-04-16 01:40





Для меня: мне пришлось добавить localhost в mynetworks независимо от факта 127.0.0.0/8 уже был там. Итак, теперь выглядит:

mynetworks = 1.1.1.1/32, 127.0.0.0/8, localhost


0
2018-04-18 15:51