Як виправити постфікс "Відмовлений доступ до ретрансляції"?


54

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

Відхилену адресу електронної пошти було "email@gmail.com". Тема 'Це тест. ', Обліковий запис:' 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, 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) як з нашої локальної мережі, так і за її межами.


6
Чому ви не приймаєте?
Грак

Відповіді:


58

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 / filtered_domains для правил на основі адреси одержувача. (Судячи з назви файлу на ім'я файлу, він, ймовірно, просто блокує певні домени ... Перевірте, чи вказаний там gmail.com?)

permit_mynetworks

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

Виходячи з цієї конфігурації, ваш поштовий клієнт повинен буде використовувати автентифікацію SMTP, перш ніж йому буде дозволено ретрансляцію повідомлень. Я не впевнений, яку базу даних використовує SASL. Це визначено в /usr/lib/sasl2/smtpd.conf Імовірно, він також використовує ту саму базу даних, що і ваші віртуальні поштові скриньки, тому ви повинні мати можливість включити автентифікацію SMTP у своєму поштовому клієнті та бути все налаштовано.


14
smtpd_use_tls = no

Ви вимкнули TLS, тому вам потрібно авторизувати локальну мережу, додавши її до mynetworks. Наприклад,

mynetworks = 192.168.1.0/24 127.0.0.0/8

Це дозволить виправити надсилання лише з вашої локальної мережі. Для надсилання електронної пошти з вашої локальної мережі вам потрібно буде працювати автентифікацією TLS.


Я встановив smtpd_use_tls = так, оскільки нам потрібно мати можливість надсилати електронні повідомлення з-за меж мережі. Однак проблема зберігається.
Ной Гудрич

Збільшити smtpd_tls_loglevel до 3 і побачити, чи щось цікаве відображається в журналах (і не забудьте скинути його назад до 1 або 0, коли закінчите).
pgs

Крім того, спробуйте встановити smtp_use_tls на "ні" (для надсилання зовнішньої пошти). Дивіться postfix.org/postconf.5.html#smtp_use_tls
pgs

1
-1 тому, що не кожен може відключити tls.
jgifford25

3
Я не кажу, що він повинен відключити tls; Я кажу, що оскільки він вже відключив це, то йому потрібно налаштувати свої мережі. І що повне рішення - змусити Tls працювати знову.
pgs

6

Я думаю , що ви пропустите ви domain.com в mydestination, так як за замовчуванням relay_domains=$mydestination, так що ви можете додати ви конфігураційна рядок:

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

або:

relay_domains = $mydomain

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


+ 1 для додавання "localhost, localhost.localdomain" до списку хостів (часто проблема в деяких системах, не зрозуміло, чому це не проблема для інших)
Iain Collins

2

У мене була така ж проблема в Outlook (з dovecote та postfix), і я витратив два дні на пошук рішення та налаштування моїх конфігураційних файлів. Все, що мені потрібно було зробити, це перевірити "Сервер вимагає автентифікації" на вкладці "Вихідні" в налаштуваннях пошти в Outlook, і мої повідомлення тепер надсилаються на gmail. Детальну інструкцію про пошук налаштування див . Тут http://support.bluetie.com/node/440 .


2

Ця проблема надовго клопотала мене. Я намагався підключитися з 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

0

Для мене: я повинен був додати localhostдо mynetworksнезалежно від того , 127.0.0.0/8був уже там. Отже, тепер виглядає:

mynetworks = 1.1.1.1/32, 127.0.0.0/8, localhost

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.