The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  правила/FAQ  поиск  регистрация  вход/выход  слежка  RSS
"Whitelist в smtpd_relay_restrictions в Postfix"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Почта / Linux)
Изначальное сообщение [ Отслеживать ]

"Whitelist в smtpd_relay_restrictions в Postfix"  +/
Сообщение от MarvinD (ok) on 17-Окт-17, 14:17 
Всем привет.

Есть Postfix. Работает как шлюз исходящей почты (с авторизацией по паролю), и заодно перенаправляет входящую почту для одного домена (пусть domain1.com) на основной почтовый сервер. Т.е. не является конечной остановкой для почты.

Основная почта - в облаке, на Exchange Online. Там есть опция (поток обработки почты - соединители), где можно настроить, через какой промежуточный сервер можно переслать отправляемую почту. В Exchange Online указал мой Postfix.

В почтовом клиенте (Outlook) вынужден использовать не IMAP, а Microsoft Exchange, который, паразит, не дает просто указать кастомный SMTP!!! Т.е. почта из Outlook с авторизацией через Exchange Online уходит прекрасно, но если ее релеить на postfix, то он не дает открыто релеить через него почту в другие домены.

Конфиг Postfix:
main.cf:

relay_domains = domain1.com
...
smtpd_relay_restrictions =
        reject_non_fqdn_recipient,
        reject_non_fqdn_sender,
        reject_unknown_recipient_domain,
        reject_unknown_sender_domain,
        permit_mynetworks,
        permit_sasl_authenticated,
        reject_unauth_destination,
        reject_invalid_hostname,
        reject_unverified_sender,
        reject_unknown_client_hostname,
        reject_unknown_helo_hostname,
        defer_unauth_destination

И, вроде бы, прекрасно, что это не открытый релей.
Но без авторизации отправить через него почту в домен, отличный от domain1.com, невозможно. И письма из Exchange Online, пересылаемые от Microsoft на Postfix, отбрасываются. Лог на postfix, когда Exchange Online пытается переслать через него почту:

Anonymous TLS connection established from mail-ve1eur122p0672.outbound.protection.outlook.com[213.199.154.150]: TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)
NOQUEUE: reject: RCPT from mail-ve1eur122p0672.outbound.protection.outlook.com[213.199.154.150]: 454 4.7.1 <external123@partner.org>: Relay access denied; from=<my@domain1.com> to=<external123@partner.org> proto=ESMTP helo=<EUR03-VE1-obe.outbound.protection.outlook.com>
disconnect from mail-ve1eur122p0672.outbound.protection.outlook.com[213.199.154.150]

Оно и логично. С какого перепугу мой postfix будет релеить почту от "левых" *.outbound.protection.outlook.com? Он ее и отбрасывает.

Хосты (и IP) *.outbound.protection.outlook.com постоянно меняются, я не могу поступить грубо/криво и добавить нужный IP в myhostname.

Если relay_domains указать так:

relay_domains = domain1.com,partner.org

то почта на email external123@partner.org пройдет успешно. Но тогда надо просто делать открытый релей для любых доменов! Ясное дело - не хочу.

В smtpd_relay_restrictions, по моему представлению, надо указать что-то вроде:

smtpd_relay_restrictions =
        reject_non_fqdn_recipient,
        reject_non_fqdn_sender,
        reject_unknown_recipient_domain,
        reject_unknown_sender_domain,
        permit_mynetworks,
        permit_sasl_authenticated,
        check_client_access hash:/etc/postfix/trusted_servers,
        reject_unauth_destination,
        reject_invalid_hostname,
        reject_unverified_sender,
        reject_unknown_client_hostname,
        reject_unknown_helo_hostname,
        defer_unauth_destination
        
В файле /etc/postfix/trusted_servers:
.outbound.protection.outlook.com OK

Но почему-то не работает.

# postmap /etc/postfix/trusted_servers

Проверяю:
# postmap -q mail-am5eur02lp0143.outbound.protection.outlook.com /etc/postfix/trusted_servers
фиг там
# postmap -q .outbound.protection.outlook.com /etc/postfix/trusted_servers
ок

То-ли я не тот синтаксис использую, то-ли еще что-то. Есть идеи, как заставить разрешить postfix релеить почту, приходящую с хостов *.outbound.protection.outlook.com и адресованную любым адресам почты (а не моему домену), при этом не став открытым релеем?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Whitelist в smtpd_relay_restrictions в Postfix"  +/
Сообщение от MarvinD (ok) on 18-Окт-17, 18:03 
Параметр relay_domains = domain1.com трогать не надо, он для тех, кто шлет почту мне. Т.е. без пароля smtp почту можно принимать только для моего домена domain1.com. Это ясное дело.

Если упростить, то как разрешить postfix релеить/отправлять почту в двух случаях:
1. клиент авторизован на этом postfix с паролем;
2. клиент принадлежит поддомену .outbound.protection.outlook.com и для этого случая пускать без пароля.

По идее, все просто должно быть.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Whitelist в smtpd_relay_restrictions в Postfix"  +/
Сообщение от Andrey (??) on 18-Окт-17, 21:10 
> Параметр relay_domains = domain1.com трогать не надо, он для тех, кто шлет
> почту мне. Т.е. без пароля smtp почту можно принимать только для
> моего домена domain1.com. Это ясное дело.
> Если упростить, то как разрешить postfix релеить/отправлять почту в двух случаях:
> 1. клиент авторизован на этом postfix с паролем;
> 2. клиент принадлежит поддомену .outbound.protection.outlook.com и для этого случая пускать
> без пароля.
> По идее, все просто должно быть.

Он вас режет по ошибке:
> reject: RCPT from mail-ve1eur122p0672.outbound.protection.outlook.com

Правило, разрешающее пересылать с по RCPT FROM (если не ошибаюсь) должно находиться в разрешениях smtpd_client_restrictions.
Что-то типа:
smtpd_client_restriction = ...,
   check_client_access hash:/etc/postfix/permit_client,
   ...

И файл /etc/postfix/permit_client содержащий строку
   *.outbound.protection.outlook.com   OK
Возможно что домен нужно будет преобразовать по правилам regexp
Ну и не забыть сделать postmap после редактирования файла

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

4. "Whitelist в smtpd_relay_restrictions в Postfix"  +/
Сообщение от MarvinD (ok) on 19-Окт-17, 12:07 
> Он вас режет по ошибке:
>> reject: RCPT from mail-ve1eur122p0672.outbound.protection.outlook.com
> Правило, разрешающее пересылать с по RCPT FROM (если не ошибаюсь) должно находиться
> в разрешениях smtpd_client_restrictions.
> Что-то типа:
> smtpd_client_restriction = ...,
>    check_client_access hash:/etc/postfix/permit_client,
>    ...

smtpd_client_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unknown_reverse_client_hostname,
reject_unknown_client_hostname,
permit

Тут не нужны еще разрешения. Любой и так может отправлять почту мне (relay_domains = domain1.com), без ограничений по клиентам.

Ограничения существуют для отправки почты в другие домены, а этим, насколько я понимаю, заведует параметр smtpd_relay_restrictions. Или же smtpd_recipient_restrictions.

http://www.postfix.org/postconf.5.html#smtpd_recipient_restr...:
...
With Postfix versions before 2.10, the rules for relay permission and spam blocking were combined under smtpd_recipient_restrictions, resulting in error-prone configuration. As of Postfix 2.10, relay permission rules are preferably implemented with smtpd_relay_restrictions, so that a permissive spam blocking policy under smtpd_recipient_restrictions will no longer result in a permissive mail relay policy.
...

В логе postfix:
NOQUEUE: reject: RCPT from mail-he1eur01lp0210.outbound.protection.outlook.com 554 5.7.1 Relay access denied

Ответка от Exchange в почтовую программу:
550 5.7.367 Отправитель не авторизован для ретрансляции

Добавил 1:
А можно в конфиге на REJECT или PERMIT действия ставить метки, чтобы отследить, где конкретно происхоидт отлуп?

Добавил 2:
debug_peer_list = /etc/postfix/trusted_servers
debug_peer_level = 2
изучаю...

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

6. "Whitelist в smtpd_relay_restrictions в Postfix"  +/
Сообщение от Andrey (??) on 19-Окт-17, 12:49 
>[оверквотинг удален]
> with smtpd_relay_restrictions, so that a permissive spam blocking policy under smtpd_recipient_restrictions
> will no longer result in a permissive mail relay policy.
> ...
> В логе postfix:
> NOQUEUE: reject: RCPT from mail-he1eur01lp0210.outbound.protection.outlook.com 554
> 5.7.1 Relay access denied
> Ответка от Exchange в почтовую программу:
> 550 5.7.367 Отправитель не авторизован для ретрансляции
> А можно в конфиге на REJECT или PERMIT действия ставить метки, чтобы
> отследить, где конкретно происхоидт отлуп?

Ок.
Добавьте в разрешенные IP вот по этому списку: https://technet.microsoft.com/en-us/library/dn163583(v=exchg.150).aspx


Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

3. "Whitelist в smtpd_relay_restrictions в Postfix"  +/
Сообщение от Аноним (??) on 19-Окт-17, 07:46 
> Проверяю:
> # postmap -q mail-am5eur02lp0143.outbound.protection.outlook.com /etc/postfix/trusted_servers
> фиг там
> # postmap -q .outbound.protection.outlook.com /etc/postfix/trusted_servers
> ок

postmap -q умеет проверять только точное совпадение, а поведение постфикса зависит от параметра parent_domain_matches_subdomains -- попробуйте добавить в файл /etc/postfix/trusted_servers строку:
outbound.protection.outlook.com OK
(т.е. без точки в начале).

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Whitelist в smtpd_relay_restrictions в Postfix"  +/
Сообщение от MarvinD (ok) on 19-Окт-17, 12:28 
>> Проверяю:
>> # postmap -q mail-am5eur02lp0143.outbound.protection.outlook.com /etc/postfix/trusted_servers
>> фиг там
>> # postmap -q .outbound.protection.outlook.com /etc/postfix/trusted_servers
>> ок
> postmap -q умеет проверять только точное совпадение, а поведение постфикса зависит от
> параметра parent_domain_matches_subdomains -- попробуйте добавить в файл /etc/postfix/trusted_servers
> строку:
> outbound.protection.outlook.com OK
> (т.е. без точки в начале).

Спасибо за совет! Добавил. Теперь:

postmap -q outbound.protection.outlook.com /etc/postfix/trusted_servers
OK
postmap -q .outbound.protection.outlook.com /etc/postfix/trusted_servers
OK
postmap -q mail-am5eur02lp0143.outbound.protection.outlook.com /etc/postfix/trusted_servers

Postfix по-прежнему не реагирует.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

7. "Whitelist в smtpd_relay_restrictions в Postfix"  +/
Сообщение от Аноним (??) on 19-Окт-17, 19:24 
> Postfix по-прежнему не реагирует.

Возможно блокируют правила в smtpd_recipient_restrictions, попробуйте добавить туда эту же проверку. Или замените в файле /etc/postfix/trusted_servers
OK
на
REJECT test for outbound.protection.outlook.com
и посмотрите, изменился ли ответ от вашего сервера - хоть узнаете, работает ли файл.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

8. "Whitelist в smtpd_relay_restrictions в Postfix"  +/
Сообщение от MarvinD (ok) on 20-Окт-17, 11:05 
> Возможно блокируют правила в smtpd_recipient_restrictions, попробуйте добавить туда
> эту же проверку. Или замените в файле /etc/postfix/trusted_servers
> OK
>  на
> REJECT test for outbound.protection.outlook.com
> и посмотрите, изменился ли ответ от вашего сервера - хоть узнаете, работает
> ли файл.

Здорово! Спасибо за совет. Правила работают. Reject в логи пишет (укорочу):
NOQUEUE: reject: RCPT from host1.outbound.protection.outlook.com[213.199.154.183]: 554 5.7.1 <host1.outbound.protection.outlook.com[213.199.154.183]>: Client host rejected: test for outbound.protection.outlook.com; ...

Еще раз спасибо, очень полезно для разбора.

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру