LINUX.ORG.RU
решено ФорумAdmin

Отключить отправку sender non-delivery notification о несуществующем пользователе

 


0

1

На моей почтовой машине установлена связка Postfix+Dovecot, базой пользователей рулит dovecot, пользователи виртуальные (практически как по вики). Помимо этого на входе стоит postgrey.

Проблема следующая - приходит почта с левых доменов, не совпадающих с доменом в адресе отправителя, на несуществующего пользователя. При этом проверку postgrey'ем успешно проходит. Это приводит к тому, что postfix отправляет сообщение об этом обратно. Домен в адресе отправителя вполне нормальный (mail.ru) => моя машина банится как спамер. Вот пример:

Oct 16 14:33:04 mydomain postfix/smtpd[25024]: connect from fb1.z8.ru[80.93.62.37]
Oct 16 14:33:05 mydomain postgrey[15801]: action=pass, reason=triplet found, delay=3655, client_name=fb1.z8.ru, client_address=80.93.62.37, sender=timofej.bejlin@mail.ru, recipient=director@mydomain.org
Oct 16 14:33:05 mydomain postgrey[15801]: cleaning up old logs...
Oct 16 14:33:05 mydomain postfix/smtpd[25024]: 5D77F20795: client=fb1.z8.ru[80.93.62.37]
Oct 16 14:33:05 mydomain postfix/cleanup[25029]: 5D77F20795: message-id=<>
Oct 16 14:33:05 mydomain postfix/qmgr[23154]: 5D77F20795: from=<timofej.bejlin@mail.ru>, size=14677, nrcpt=1 (queue active)
Oct 16 14:33:05 mydomain postfix/lmtp[25030]: 5D77F20795: to=<director@mydomain.org>, relay=mail.mydomain.org[private/dovecot-lmtp], delay=0.31, delays=0.25/0.02/0.01/0.03, dsn=5.1.1, status=bounced (host mail.mydomain.org[private/dovecot-lmtp] said: 550 5.1.1 <director@mydomain.org> User doesn't exist: director@mydomain.org (in reply to RCPT TO command))
Oct 16 14:33:05 mydomain postfix/smtpd[25024]: disconnect from fb1.z8.ru[80.93.62.37]
Oct 16 14:33:05 mydomain postfix/cleanup[25029]: 91454210DA: message-id=<20131016143305.91454210DA@mail.mydomain.org>
Oct 16 14:33:05 mydomain postfix/qmgr[23154]: 91454210DA: from=<>, size=16845, nrcpt=1 (queue active)
Oct 16 14:33:05 mydomain postfix/bounce[25032]: 5D77F20795: sender non-delivery notification: 91454210DA
Oct 16 14:33:05 mydomain postfix/qmgr[23154]: 5D77F20795: removed
Oct 16 14:33:08 mydomain postfix/smtp[25034]: 91454210DA: to=<timofej.bejlin@mail.ru>, relay=mxs.mail.ru[94.100.176.20]:25, delay=3.2, delays=0.01/0.01/0.29/2.8, dsn=5.0.0, status=bounced (host mxs.mail.ru[94.100.176.20] said: 550 spam message rejected. Please visit http://help.mail.ru/notspam-support/id?c=*********************** or  report details to abuse@corp.mail.ru. Error code: ********. ID: *************. (in reply to end of DATA command))
Oct 16 14:33:08 mydomain postfix/qmgr[23154]: 91454210DA: removed

Вариант с полным отключением сообщений о несуществующем пользователе приемлим. Как это сделать так, чтобы заработало?

★★★

Последнее исправление: cetjs2 (всего исправлений: 1)

Правильный метод борьбы - включить virtual_mailbox_maps в конфиге. Тогда команда reject_unauth_destination в smtpd_recipient_restrictions резко начнет проверять присутствует ли почтовый ящик в этом virtual_mailbox_maps и реджектить письмо на этапе RCPT TO если что. Для этого тебе необходимо понять откуда Dovecot берет юзеров (ну, там, mysql, текстовый файл или что еще) и дать постфиксу этот же источник в виде карты.

Неправильный вариант (но тоже имеет право на жизнь) - это чтобы довекот при получении письма на несуществующий ящик куда-нибудь его девал, например дропал или складывал в какую-нибудь помойку. Насколько я знаю, довекот простыми средствами этого не может (поправьте меня, если кто умеет), но может быть этого можно добиться всякими system-wide sieve скриптами.

alex_the_v ★★★
()
Ответ на: комментарий от alex_the_v

Первый метод кажется мне наиболее разумным (в гугле находились подобные методы, но только для локальных юзеров). Вот только не смог нагуглить, как скормить postfix'у базу юзеров в виде passwd-style файла без необходимости его как-то awk'ом переформатировать.

lu4nik ★★★
() автор топика
Ответ на: комментарий от lu4nik

Вот, выбирай на вкус. Это - все, что постфикс поддерживает. Я решил, кстати, на Exim уходить, ибо Постфикс тупой как валенок. Надоело. Каждый раз когда надо чего-то от него добиться, начинаются всякие начемоданечерезкитайские пляски.

alex_the_v ★★★
()
Последнее исправление: alex_the_v (всего исправлений: 1)

Вариант с полным отключением сообщений о несуществующем пользователе приемлим.

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

AS ★★★★★
()
Ответ на: комментарий от lu4nik

Вот только не смог нагуглить, как скормить postfix'у базу юзеров в виде passwd-style файла

Могу порекомендовать переход на Cyrus-IMAP + Sendmail. У Cyrus-IMAP есть smmapd, которым Sendmail умеет пользоваться.

AS ★★★★★
()
Ответ на: комментарий от AS

Альтернатива - слать бессмысленную почту на абсолютно непричастные к спаму сервера. Или можешь предложить лучший выход (хотя бы концептуально)?

lu4nik ★★★
() автор топика
Ответ на: комментарий от alex_the_v

Странно как-то, что нет непосредственной поддержки passwd. Впрочем, наверное мой случай (около 5 ящиков в текстовичке) не очень типичный.

Видимо, придется с помощью однострочника на awk готовить отдельную таблицу. Переходить с постфикса не собираюсь, ибо для моих задач exim - это явно перебор, еще по-новой конфигурировать нужно.

lu4nik ★★★
() автор топика
Ответ на: комментарий от lu4nik

Альтернатива - слать бессмысленную почту на абсолютно непричастные к спаму сервера.

Альтернатива одна - не принимать вообще, если сообщение идёт несуществующему пользователю. В этом случае проблема боунса будет проблемой сервера отправителя.

AS ★★★★★
()
Ответ на: комментарий от lu4nik

Только не sendmail! Только не его конфиги!

Да ладно, там всё, что надо, делается через прототип конфига и m4. Я забыл, когда в cf смотрел в последний раз. И забыл, когда правила свои писал (да и изначально-то писал совсем чуть-чуть).

Кстати, Exim тоже можно научить спрашивать у Cyrus-IMAP про пользователя в момент приёма. Где-то видел рецепт.

AS ★★★★★
()
Последнее исправление: AS (всего исправлений: 1)
Ответ на: комментарий от lu4nik

Как раз, именно passwd и поддерживается - unix:passwd.byname. А passwd-like файлы - нет, надо делать хэш и индексировать его postmap.

alex_the_v ★★★
()
Ответ на: комментарий от AS

Спасибо, ссылку схоронил. В ближайшее время не собираюсь переходить с postfix, но в будущем может пригодиться.

lu4nik ★★★
() автор топика
Ответ на: комментарий от alex_the_v

Ну, я неточно выразился - имел ввиду как раз passwd-like.

На данный момент сделал так. Генерирую дополнительный файл с юзерами специально для постфикса следующим однострочником:

cat passwd | awk -F ':' '{print($1, $6);}' > valid_users
В main.cf добавил
virtual_mailbox_maps = texthash:/var/mail/valid_users

В принципе, не страшно, ибо новых юзеров добавляю очень редко. Хотя выглядит несколько неэстетично.

lu4nik ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.