Postfix+Amavisd-new: «User unknown» или как не пропускать письма с несуществующими получателями
Доброго времени суток!
Собственно, приходят письма с несуществующим адресом получателя и недействительным обратным адресом :)
Если мы отправляем письмо об ошибке, то в итоге плодим спам т.к. получатель то недействительный…
Подскажите, как в связке Postfix+Amavisd-new:
1. Отключить отправку сообщений «User unknown»
2. Вовсе не принимать сообщение, если хотя бы одного получателя нет на сервере
Стоит старый сервер с sendmail в режиме relay, назовём его mx1.
Рядом стоит сравнительно новый сервер postfix, где пользователи в mysql базе т.е. с virtual_mailbox, а так же прикручены amavisd-new, spamassassin, clam-av… назовём это сервер mail.
На данный момент проблема в следующем. Приходит почта на mx1, он её переправляет на mail, который смотрит, что есть Неизвестные пользователи и обрубает на уровне smtp сессии письмо от mx1. mx1 смотрит на ошибку и отправляет эту ошибку первоначальному отправителю. Естественно, когда приходит спам на косые-кривые имена, то от ответов mx1 страдают ни в чём неповинные сервера, что не есть гуд т.к. они в свою очередь начинают банить
Подскажите, пожалуйста, если есть опыт, следующее:
1. Возможно ли просто получать сервером mail все-все письма, при этом письма для Неизвестных пользователей складывать в какую-нибудь папку (например, /dev/null)
2. Возможно ли фильтровать эти письма так, чтобы, например письма, которые приходят для Неизвестных пользователей с домена mail.ru отправлять в /dev/null, а остальные складывать
Не нашёл я вменяемой документации конкретно в связке postfix + virtual + «unknown user» — это если кому проще ссылку бросить.
Можно завернуть всю такую почту в отдельный почтовый ящик при помощи luser_relay и разгребать ее потом вручную. Но это лечение аппендицита аспирином.
По уму, надо именно с релеем разбираться. Тут видится два варианта:
использовать фичу сендмейла blacklist_recipients, скармливая таким образом всех существующих пользователей;
сносить sendmail, и ставить что-нибудь типа postfix, с функциональностью, аналогичной reject_unverified_recipient.
Спасибо, принято. luser_relay не прокатит с virtual_mailboxes, увы он для local (даже Ваша ссылка об этом говорит)
1 вариант отсекаю. т.к. это блокировка конкретных доменов-хостов, которые не должны получать письма, а white_list создатели не придумали (либо я, зелёный, об этом не знаю):
If you use:
FEATURE(`blacklist_recipients')
then you can add entries to the map for local users, hosts in your domains, or addresses in your domain which should not receive mail:
badlocaluser@ ERROR:550 Mailbox disabled for this username
host.mydomain.com ERROR:550 That host does not accept mail
user@otherhost.mydomain.com ERROR:550 Mailbox disabled for this recipient
This would prevent a recipient of badlocaluser@mydomain.com, any user at host.mydomain.com, and the single address user@otherhost.mydomain.com from receiving mail
2 вариант мне ближе по душе, да и я его начал реализовывать, по крайней мере postfix не вызывает плохих эмоций :)
На exim не будет проще релей сделать? Мне важно ваше мнение т.к. судя по комментариям — опыта у вас больше.
Всё не то — отказ при передачи с релея на сервер уходит на релей, а релей пытается его отправить несуществующему пользователю, например, на yandex, а яндекс тоже не дурак и отказывается от несуществующих учёток.
Я могу хоть тонну документов перечитать, вы только ссылки бросайте.
зы Спасибо знающим товарищам за минус ;)
Про релей — это вы зря сразу не написали. А что за релей? Какое ПО на нём и что мы можем контролировать? Отсечение несуществующих записей хорошо бы делать именно на нём.
там старый-бородатый sendmail… ну неужели postfix не умеет заглушать отлуп «User unknown»?!!! Пусть даже шлёт все неправильные юзеры на отдельный ящик… ну хоть кто-нибудь помогите… :(
Если обратный адрес недействительный — письмо никуда и не шлётся.
Если действительный, то какая-нибудь секретарша получает уведомление, что опечаталась в адресе.
Стоит старый сервер с sendmail в режиме relay, назовём его mx1.
Рядом стоит сравнительно новый сервер postfix, где пользователи в mysql базе т.е. с virtual_mailbox, а так же прикручены amavisd-new, spamassassin, clam-av… назовём это сервер mail.
На данный момент проблема в следующем. Приходит почта на mx1, он её переправляет на mail, который смотрит, что есть Неизвестные пользователи и обрубает на уровне smtp сессии письмо от mx1. mx1 смотрит на ошибку и отправляет эту ошибку первоначальному отправителю. Естественно, когда приходит спам на косые-кривые имена, то от ответов mx1 страдают ни в чём неповинные сервера, что не есть гуд т.к. они в свою очередь начинают банить
Подскажите, пожалуйста, если есть опыт, следующее:
1. Возможно ли просто получать сервером mail все-все письма, при этом письма для Неизвестных пользователей складывать в какую-нибудь папку (например, /dev/null)
2. Возможно ли фильтровать эти письма так, чтобы, например письма, которые приходят для Неизвестных пользователей с домена mail.ru отправлять в /dev/null, а остальные складывать
Не нашёл я вменяемой документации конкретно в связке postfix + virtual + «unknown user» — это если кому проще ссылку бросить.
Ещё раз повторю: отсекать несуществующих пользователей (получателей) положено на релее. Настраивайте свой сендмейл, значит, раз он у вас на фронте. Либо заворачивайте всё на постфикс без релея и настраивайте как описано в статье rejecting unknown local users (что, кстати, там настроено по умолчанию).
В той конфигурации, как у вас сейчас, сделать всё праивильно невозможно — либо вы теряете нормальные и нужные сообщения об ошибках, либо получаете бэкскэттер, как сейчас.
К сожалению сендмаил старенький и даже грэйлистинг на него не прикрутить по-человечески. Буду менять на postfix, который и пользователей будет знать, и DKIM дописывать и за серыми списками следить. Спасибо, что откликнулись.