The OpenNET Project / Index page

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



"Отсутствующий MAIL FROM и аутентифицированный пользователь"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Почта / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"Отсутствующий MAIL FROM и аутентифицированный пользователь"  +/
Сообщение от Ant (??), 12-Сен-19, 15:00 
Коллеги, доброго дня.

% name -r
11.3-RELEASE-p3

% pkg info | grep postfix-3
postfix-3.3.1_1,1              Secure alternative to widely-used Sendmail

На мой почтовый сервер приходят письма от аутентифицированного пользователя с пустым обратным адресом и получателем несуществующего почтового домена. В результате, в очереди скапливается огромное число писем и доставить их не представляется возможным.
Адрес отправителя проверяется на существование в базе данных(chksender),а затем на соответствие адреса и логина(reject_authenticated_sender_login_mismatch). Проблема в том, что  MAIL FROM пустой и эти проверки не работают(smtpd_sender_login_maps), нельзя сформировать запрос к БД (saslsendercheck_query_filter), %s - это адрес отправителя
smtpd_sender_restrictions =
permit_mynetworks,
reject_non_fqdn_sender,
check_sender_access hash:$config_directory/db/check_sender_access.hash,
reject_authenticated_sender_login_mismatch,
reject_unknown_sender_domain

% cat db/check_sender_access.hash
mydomain.local                chksender

<>      reject_unknown_recipient_domain

smtpd_sender_login_maps = regexp:$config_directory/db/smtpd_sender_login_maps.regexp, ldap:saslsendercheck

saslsendercheck_query_filter = (&(objectClass=qmailUser)(|(mail=%s)(mailAlternateAddress=%s)))
saslsendercheck_result_attribute = uid, rfc822sender


Я должен принимать почту с пустым MAIL FROM, но я ?не обязан? это делать для несуществующего домена или с отсутствующей MX записью. В конец  check_sender_access.hash я добавил «<> reject_unknown_recipient_domain».
reject_unknown_recipient_domain - Reject the request when Postfix is not final destination for the recipient domain, and the RCPT TO domain has 1) no DNS MX and no DNS A record or 2) a malformed MX record such as a record with a zero-length MX hostname
Т.е. идея следующая, если MAIL FROM не задан, домена получателя нет, mx отсуствует, то письма можно не получать — отбрасывать их. По логам ниже видно, что МХ не находит, но находит A запись и проверка благополучно заканчивается без ошибки. Почему, ведь «no DNS MX and no DNS A record »?


Sep 12 12:23:22 aid postfix/smtpd[80419]: generic_checks: name=permit_mynetworks status=0
Sep 12 12:23:22 aid postfix/smtpd[80419]: generic_checks: name=reject_non_fqdn_sender
Sep 12 12:23:22 aid postfix/smtpd[80419]: generic_checks: name=reject_non_fqdn_sender status=0
Sep 12 12:23:22 aid postfix/smtpd[80419]: generic_checks: name=check_sender_access
Sep 12 12:23:22 aid postfix/smtpd[80419]: check_access: <>
Sep 12 12:23:22 aid postfix/smtpd[80419]: maps_find: hash:/usr/local/etc/postfix/db/check_sender_access.hash: hash:/usr/local/etc/postfix/db/check_sender_access.hash(0,lock|fold_fix|utf8_request):
<> = reject_unknown_recipient_domain
Sep 12 12:23:22 aid postfix/smtpd[80419]: check_table_result: hash:/usr/local/etc/postfix/db/check_sender_access.hash reject_unknown_recipient_domain <>
Sep 12 12:23:22 aid postfix/smtpd[80419]: >>> START Sender address RESTRICTIONS <<<
Sep 12 12:23:22 aid postfix/smtpd[80419]: generic_checks: name=reject_unknown_recipient_domain
Sep 12 12:23:22 aid postfix/smtpd[80419]: reject_unknown_address: sender@lk.mydomain.local
Sep 12 12:23:22 aid postfix/smtpd[80419]: ctable_locate: leave existing entry key ?sender@lk.mydomain.local
Sep 12 12:23:22 aid postfix/smtpd[80419]: reject_unknown_mailhost: lk.mydomain.local
Sep 12 12:23:22 aid postfix/smtpd[80419]: lookup lk.mydomain.local type MX flags  
Sep 12 12:23:22 aid postfix/smtpd[80419]: dns_query: lk.mydomain.local (MX): Host found but no data record of requested type
Sep 12 12:23:22 aid postfix/smtpd[80419]: lookup lk.mydomain.local  type A flags  
Sep 12 12:23:22 aid postfix/smtpd[80419]: dns_query: lk.mydomain.local  (A): OK
Sep 12 12:23:22 aid postfix/smtpd[80419]: dns_query: reply len=130 ancount=1 nscount=2
Sep 12 12:23:22 aid postfix/smtpd[80419]: dns_get_answer: type A for lk.mydomain.local  
Sep 12 12:23:22 aid postfix/smtpd[80419]: generic_checks: name=reject_unknown_recipient_domain status=0
Sep 12 12:23:22 aid postfix/smtpd[80419]: >>> END Sender address RESTRICTIONS <<<

Вопросы:
1. В принципе, как можно выйти из создавшейся ситуации?
2. Как отбросить почту аутентифицированного пользователя с пустым адресом отправителя и правильно ли это?
3. reject_unknown_recipient_domain должен проверять MX, но не делает. Почему?

Заранее благодарен за ответы.

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

Оглавление

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


1. "Отсутствующий MAIL FROM и аутентифицированный пользователь"  +/
Сообщение от BarS (??), 12-Сен-19, 17:30 
Объясняю, я не обязан иметь запись mx домена, мне могут слать хоть на user@ip.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Отсутствующий MAIL FROM и аутентифицированный пользователь"  +1 +/
Сообщение от Аноним (2), 12-Сен-19, 18:36 
> 1. В принципе, как можно выйти из создавшейся ситуации?

Административно повлиять на "аутентифицированного" пользователя - не вариант?

> 2. Как отбросить почту аутентифицированного пользователя с пустым адресом отправителя
> и правильно ли это?

Например. с помощью header_check парсить message id, и по нему отбрасывать.
Но сама идея режектить почту с пустым mail from порочна.

> 3. reject_unknown_recipient_domain должен проверять MX, но не делает. Почему?

Потому что «no DNS MX _AND_ no DNS A record » Должны отсутствовать и MX, и А-записи.

А вообще каша какаято. Что такое "аутентифицированный" пользователь, не вижу намеков на аутентификацию, как он ее проходит. То mail from пустой, то обратный адрес. Примеры писем и логи сессии в студию...

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

3. "Отсутствующий MAIL FROM и аутентифицированный пользователь"  +/
Сообщение от Ant (??), 12-Сен-19, 19:54 
>> 1. В принципе, как можно выйти из создавшейся ситуации?
> Административно повлиять на "аутентифицированного" пользователя - не вариант?

Можно, но завтра появистя второй, третий и т.д. За всеми не набегаешься.

>> 2. Как отбросить почту аутентифицированного пользователя с пустым адресом отправителя
>> и правильно ли это?
> Например. с помощью header_check парсить message id, и по нему отбрасывать.
> Но сама идея режектить почту с пустым mail from порочна.
>> 3. reject_unknown_recipient_domain должен проверять MX, но не делает. Почему?
> Потому что «no DNS MX _AND_ no DNS A record » Должны
> отсутствовать и MX, и А-записи.
> А вообще каша какаято. Что такое "аутентифицированный" пользователь, не вижу намеков на
> аутентификацию, как он ее проходит. То mail from пустой, то обратный
> адрес. Примеры писем и логи сессии в студию...

Хорошо, пусть будет так, возможно мы быстрее поймем друг-друга:
mydomain.local - Мой домен
lk.mydomain.local - Мой поддомен, может быть и чужой, главное чтобы была А, но не было MX записи.

import smtplib, ssl

smtp_server = "smtp.mydomain.local"
smtp_ehlo = "hostname.mydomain.local"
smtp_timeout = 5
smtp_port = 25

auth_user = "user@mydomain.local"
auth_pass = "pass"

sender_email = ""
receiver_email = "user@lk.mydomain.local"

message = """\
Subject: Hi there

This message is sent from Python."""

context = ssl.create_default_context()
with smtplib.SMTP(smtp_server, smtp_port, smtp_ehlo, smtp_timeout) as server:
    server.starttls(context=context)
    server.ehlo()  # Can be omitted
    server.login(auth_user, auth_pass)
    server.sendmail(sender_email, receiver_email, message)

Я запускаю этот скрипт и почтовик письмо принимает, но через некоторое время в очереди наблюдаю:
F32459CCDE     2506 Thu Sep 12 15:53:32  MAILER-DAEMON
(delivery temporarily suspended: connect to lk.mydomain.local[x.x.x.35]:25: Operation timed out)
                                         user@lk.mydomain.local

У меня таких писем в очереди очень много и я пока не понимаю, как не принимать письма для домена с несуществующей mx-записью.

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

4. "Отсутствующий MAIL FROM и аутентифицированный пользователь"  +1 +/
Сообщение от Аноним (2), 12-Сен-19, 20:22 
>>> 1. В принципе, как можно выйти из создавшейся ситуации?
>> Административно повлиять на "аутентифицированного" пользователя - не вариант?
> Можно, но завтра появистя второй, третий и т.д. За всеми не набегаешься.

А не надо бегать. Есть технические стандарты - благоволите соблюдать. Не согласны - стройте свой интернет с игрищами и блудницами.

>[оверквотинг удален]
> в очереди наблюдаю:
> F32459CCDE     2506 Thu Sep 12 15:53:32  MAILER-DAEMON
> (delivery temporarily suspended: connect to lk.mydomain.local[x.x.x.35]:25: Operation
> timed out)
>            
>            
>            
>        user@lk.mydomain.local
> У меня таких писем в очереди очень много и я пока не
> понимаю, как не принимать письма для домена с несуществующей mx-записью.

Наличие МХ записи не обязательно. В смысле, технически при отсутствии мх отправка может осуществляться по адресу из А записи, по ориджину домена...
Можно просто не принимать письма от отправителей с несуществующим доменом - reject_unknown_sender_domain. Это правильнее всего, ибо нефиг.

Ну а что в итоге-то беспокоит? Письма в очереди висят? Ну и бох с ними, повисят и через четверо суток самоликвидируются. Бывает, по несколько сотен таких висят, серверу от них плохо не делается. Напишите второй скрипт, который будет искать такие письма в очереди с учетом наличия ваших некошерных "отправителей" и грохать именно их. Ну или покрутите maximal_queue_lifetime, но я бы это не трогал без крайней нужды.

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

5. "Отсутствующий MAIL FROM и аутентифицированный пользователь"  +/
Сообщение от Ant (??), 13-Сен-19, 10:05 
>>>> 1. В принципе, как можно выйти из создавшейся ситуации?
>>> Административно повлиять на "аутентифицированного" пользователя - не вариант?
>> Можно, но завтра появистя второй, третий и т.д. За всеми не набегаешься.
> А не надо бегать. Есть технические стандарты - благоволите соблюдать. Не согласны
> - стройте свой интернет с игрищами и блудницами.

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


>[оверквотинг удален]
>> (delivery temporarily suspended: connect to lk.mydomain.local[x.x.x.35]:25: Operation
>> timed out)
>>
>>
>>
>>        user@lk.mydomain.local
>> У меня таких писем в очереди очень много и я пока не
>> понимаю, как не принимать письма для домена с несуществующей mx-записью.
> Наличие МХ записи не обязательно. В смысле, технически при отсутствии мх отправка
> может осуществляться по адресу из А записи, по ориджину домена...

Спасибо, этот момент я упустил.
> Можно просто не принимать письма от отправителей с несуществующим доменом - reject_unknown_sender_domain.
> Это правильнее всего, ибо нефиг.

У меня есть это правило в цепочке проверок, но оно не работает, домен не задан, MAIL FROM пустой.

> Ну а что в итоге-то беспокоит? Письма в очереди висят? Ну и
> бох с ними, повисят и через четверо суток самоликвидируются. Бывает, по
> несколько сотен таких висят, серверу от них плохо не делается.

За ночь набежало:
% mailq | grep MAILER-DAEMON | wc -l
1235

Напишите
> второй скрипт, который будет искать такие письма в очереди с учетом
> наличия ваших некошерных "отправителей" и грохать именно их. Ну или покрутите
> maximal_queue_lifetime, но я бы это не трогал без крайней нужды.

Скрипт-то есть, очередь очищается. Он исправляет последствия болезни, но не её причины.
Как временное решение, я вижу это блокировка домена и в дальнейшем написание дополнительный проверок через policy сервер. Хотелось конечно решение проблемы "из коробки", но видимо его нет.


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

8. "Отсутствующий MAIL FROM и аутентифицированный пользователь"  +/
Сообщение от Аноним (2), 13-Сен-19, 17:39 
> У меня есть это правило в цепочке проверок, но оно не работает,
> домен не задан, MAIL FROM пустой.

Странно. Возможно, правило в цепочке не на своем месте?

> Скрипт-то есть, очередь очищается. Он исправляет последствия болезни, но не её причины.

Причина в некорректных настройках почтовой системы отправителя. Вы эту проблему решать не обязаны.

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

6. "Отсутствующий MAIL FROM и аутентифицированный пользователь"  +/
Сообщение от Аноним (6), 13-Сен-19, 10:37 
> Вопросы:
> 1. В принципе, как можно выйти из создавшейся ситуации?

У тя похоже какой-то свой внутренний велосипед, а левая рука не может/не хочет договориться с правой. Морить административных тараканов нужно административными а не техническими средствами.

> 2. Как отбросить почту аутентифицированного пользователя с пустым адресом отправителя

reject_unverified_sender

Reject the request when mail to the MAIL FROM address is known to bounce, or when the sender address destination is not reachable.

Придется немного покумекать над порядком обработки правил в stmpd_*_restrictions

> и правильно ли это?

Только по признаку "пустой mailfrom" - нет, см. выше.

> 3. reject_unknown_recipient_domain должен проверять MX, но не делает. Почему?

По определению, выше ответили - не выполняются одновременно оба условия.

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

7. "Отсутствующий MAIL FROM и аутентифицированный пользователь"  +/
Сообщение от Аноним (7), 13-Сен-19, 14:40 
> Я должен принимать почту с пустым MAIL FROM, но я ?не обязан?
> это делать для несуществующего домена или с отсутствующей MX записью.

Вы должны _принимать_ почту с пустым MAIL FROM только если вы являетесь конечным получателем этого письма. Пересылать такие письма, если вы не являетесь смартхостом для этого отправителя, вы не должны.

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

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

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




Спонсоры:
Слёрм
Inferno Solutions
Hosting by Ihor
Хостинг:

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