The OpenNET Project / Index page

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

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

"Postfix сбой обработки доставки письма при длинном имени"  +/
Сообщение от sherlock email(ok) on 11-Мрт-15, 06:55 
Господа, система:
FreeBSD mrk.mmk.ru 8.4-STABLE FreeBSD 8.4-STABLE #23: Wed Jan 28 13:54:31 YEKT 2015
postfix-2.11.3_3,1

в настройках стоит, что всю почту для своего домена доставлять другому почтовику
mydestination = $myhostname, mrk.mmk.ru
mailbox_transport = smtp:нужный сервер

заметил, что для одного адреса письма не уходят куда надо, а пытаются лечь локально, в итоге получая ошибку, зависая в очереди и затем соответственно возвращаются отправителю
в ходе экспериментов выяснилось, что это зависит от длинны имени (до знака собачки), может от полной длины, но после собачки я домен менять не могу. Вот смотрите по логам:
1. Один адрес, письмо пытается лечь локально
postfix/pickup[85021]: 19D3B2AC405: uid=0 from=<root>
postfix/qmgr[1912]: 19D3B2AC405: from=<root@mrk.mmk.ru>, size=301, nrcpt=1 (queue active)
postfix/local[85595]: warning: error looking up passwd info for a12345678901234567: Invalid argument
postfix/local[85595]: 19D3B2AC405: to=<a12345678901234567@mrk.mmk.ru>, relay=local, delay=0.03, delays=0.01/0.01/0/0.01, dsn=4.0.0, status=deferred (user lookup error)

2. Второй адрес, просто убавил на один символ, снова локально
postfix/qmgr[1912]: 30D7F2AC468: from=<root@mrk.mmk.ru>, size=300, nrcpt=1 (queue active)
postfix/local[85595]: warning: error looking up passwd info for a1234567890123456: Invalid argument
postfix/local[85595]: 30D7F2AC468: to=<a1234567890123456@mrk.mmk.ru>, relay=local, delay=0, delays=0/0/0/0, dsn=4.0.0, status=deferred (user lookup error)

3. Третий адрес, убрал еще один символ, письмо пошло как надо, что за полтергейст
postfix/qmgr[1912]: D301E2AC469: from=<root@mrk.mmk.ru>, size=299, nrcpt=1 (queue active)
postfix/smtp[85611]: D301E2AC469: to=<a123456789012345@mrk.mmk.ru>, relay=*****[*******]:25, delay=0.46, delays=0/0/0.01/0.44, dsn=2.6.0, status=sent (250 2.6.0 <20150311032555.D301E2AC469@mrk.mmk.ru>
Queued mail for delivery)

Помогите, неужели это баг postfix

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

Оглавление

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


1. "Postfix сбой обработки доставки письма при длинном имени"  +/
Сообщение от PavelR (??) on 11-Мрт-15, 07:23 
> Господа, система:
> FreeBSD mrk.mmk.ru 8.4-STABLE FreeBSD 8.4-STABLE #23: Wed Jan 28 13:54:31 YEKT 2015
> postfix-2.11.3_3,1
> не могу. Вот смотрите по логам:

Ну так сами смотрите тоже:

> 1. Один адрес, письмо пытается лечь локально
> postfix/local[85595]: warning: error looking up passwd info for a12345678901234567:
>Invalid argument

Ошибка есть.

> 2. Второй адрес, просто убавил на один символ, снова локально
> postfix/local[85595]: warning: error looking up passwd info for a1234567890123456:
> Invalid argument

Ошибка есть.

> 3. Третий адрес, убрал еще один символ, письмо пошло как надо, что
> за полтергейст

Ошибки нет.

>Помогите, неужели это баг postfix

AFAIK, это наложились "особенности реализации".

> в настройках стоит, что всю почту для своего домена доставлять другому почтовику
> mydestination = $myhostname, mrk.mmk.ru
> mailbox_transport = smtp:нужный сервер

Переделайте не через mailbox_transport, а просто через transport_maps (чтобы убрать участие транспорта local):

transport_maps = hash:/etc/postfix/transport

/etc/postfix/transport:

mrk.mmk.ru: smtp:нужный сервер


Правда не совсем понятны ваши настройки. Если на релей придет письмо для несуществующего пользователя - он его примет и будет доставлять или нет?

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

2. "Postfix сбой обработки доставки письма при длинном имени"  +/
Сообщение от sherlock email(ok) on 11-Мрт-15, 08:12 
Переделал, все заработало. Интересно
причем mailbox_transport оставил
просто переделал запись в transport с
mrk.mmk.ru :
на
mrk.mmk.ru smtp:сервер

все равно объяснения нет, почему для адресов короче все работало, а для попавшегося длинного нет :)

а релей принимает все, там уже выше потом принимается решение о наличии ящика. Ящика нет, приходит оттуда ошибка (вернее не приходит, а ложится в ящик отправителя)

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

3. "Postfix сбой обработки доставки письма при длинном имени"  +1 +/
Сообщение от PavelR (??) on 11-Мрт-15, 09:26 
> Переделал, все заработало. Интересно
> причем mailbox_transport оставил
> просто переделал запись в transport с
> mrk.mmk.ru :
> на
> mrk.mmk.ru smtp:сервер
> все равно объяснения нет, почему для адресов короче все работало, а для
> попавшегося длинного нет :)

Объяснение есть. Транспорт local ищет локального пользователя, при этом возникает ошибка.
В силу наличия ошибки, она транслируется в SMTP-ошибку.

Если бы пользователь не был найден (без возникновения ошибок), то оно все равно бы пошло на mailbox_transport:

mailbox_transport (default: empty)
       Optional message delivery transport that the  local(8)  delivery  agent
       should use for mailbox delivery to all local recipients, whether or not
       they are found in the UNIX passwd database.


> а релей принимает все, там уже выше потом принимается решение о наличии
> ящика. Ящика нет, приходит оттуда ошибка (вернее не приходит, а ложится
> в ящик отправителя)

А если отправитель был внешний, то не _ложится в ящик отправителя_, а доставляется, верно? А если это был спам с подделанным адресом отправителя - то этот несчастный получает от вас мусор....

Решение: на релее должна быть база реально существующих адресов.
Её можно вести как вручную, так и полуавтоматически.

http://www.postfix.org/ADDRESS_VERIFICATION_README.html#reci...
http://www.postfix.org/postconf.5.html#address_verify_cache_...


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

4. "Postfix сбой обработки доставки письма при длинном имени"  +/
Сообщение от sherlock email(ok) on 11-Мрт-15, 10:14 
> Объяснение есть. Транспорт local ищет локального пользователя, при этом возникает ошибка.

база локальных получателей пуста, он вообще ничего не знает о ней, попытаюсь объяснить схему:
Это просто почтовый релей, который принимает письма от нескольких серверов (как правило это всякие нотифы от оракла) и стравливает их уже почтовику, который все принимает и раскладывает по ящикам, он мне не подконтроллен. Т.е. на этом почтовике, где я словил этот глюк внешних адресатов нет в принципе. И в инет он не смотрит.

> В силу наличия ошибки, она транслируется в SMTP-ошибку.
> Если бы пользователь не был найден (без возникновения ошибок), то оно все
> равно бы пошло на mailbox_transport:

пользователь всегда не найден, только он всегда письмо отправлял вышестоящему, а в этом случае больше 16 символов до @ пытался доставить сам


> А если отправитель был внешний, то не _ложится в ящик отправителя_, а
> доставляется, верно? А если это был спам с подделанным адресом отправителя
> - то этот несчастный получает от вас мусор....

отправители только внутренние, т.е. тоже с домена @mrk.mmk.ru, учетки серверов для доставки алармов и прочего

> Решение: на релее должна быть база реально существующих адресов.
> Её можно вести как вручную, так и полуавтоматически.

ну это нереально, да и не надо совершенно

все равно поведение мне пока не понятно, почему при адресе получателя XXXX@my.domain.ru, где кол-во XXX меньше или 16 символов, он отправлял согласно mailbox_transport, а когда 17 и больше, согласно файлу transport


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

5. "Postfix сбой обработки доставки письма при длинном имени"  +/
Сообщение от ALex_hha (ok) on 16-Мрт-15, 14:15 
> в настройках стоит, что всю почту для своего домена доставлять другому почтовику
> mydestination = $myhostname, mrk.mmk.ru
> mailbox_transport = smtp:нужный сервер

для этого есть relay_domains. Зачем объявлять домен, для которого сервер выступает как релей локальным?

> postfix/local[85595]: 19D3B2AC405: to=<a12345678901234567@mrk.mmk.ru>, relay=local,
> delay=0.03, delays=0.01/0.01/0/0.01, dsn=4.0.0, status=deferred (user lookup error)

вы путаете классы адресов в postfix. Советую прочитать и понять - http://www.postfix.org/ADDRESS_CLASS_README.html

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

6. "Postfix сбой обработки доставки письма при длинном имени"  +/
Сообщение от fantom (ok) on 17-Мрт-15, 10:32 
>[оверквотинг удален]
> postfix/local[85595]: 30D7F2AC468: to=<a1234567890123456@mrk.mmk.ru>, relay=local,
> delay=0, delays=0/0/0/0, dsn=4.0.0, status=deferred (user lookup error)
> 3. Третий адрес, убрал еще один символ, письмо пошло как надо, что
> за полтергейст
> postfix/qmgr[1912]: D301E2AC469: from=<root@mrk.mmk.ru>, size=299, nrcpt=1 (queue
> active)
> postfix/smtp[85611]: D301E2AC469: to=<a123456789012345@mrk.mmk.ru>, relay=*****[*******]:25,
> delay=0.46, delays=0/0/0.01/0.44, dsn=2.6.0, status=sent (250 2.6.0 <20150311032555.D301E2AC469@mrk.mmk.ru>
>  Queued mail for delivery)
> Помогите, неужели это баг postfix

У freebsd максимальная длина для имени пользователя - 16 символов, вот скорее всего оттель ноги и ростут....

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

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

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




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

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