Избегайте ненужных отказов с помощью OpenSMTPD на OpenBSD

Я запускаю OpenSMTPD на OpenBSD вместе со spamd, spamd и spamassassin, DKIMproxy и dovecot. Моя настройка заключается в обработке как локальной электронной почты на сервере, так и (внешней) электронной почты для моего домена. Моя установка, кажется, работает (все еще на этапе тестирования). Я рад, что смог реализовать свою настройку с помощью файла opensmtpd.conf из 17 строк, не считая комментариев и пробелов. Однако есть несколько вещей, которыми я не доволен. Я надеюсь, что кто-нибудь может подсказать, как решить эти проблемы:

При создании установки у меня изначально не было spamd / spamassessin. В этой конфигурации была ровно одна команда «принять», которая собирала письмо и доставляла его в голубятню. Сервер OpenSMTPD проверяет наличие адреса получателя и, если он не существует, возвращает ошибку 550 и не разрешает отправку электронного письма. Это хорошо.

После того, как я включил spamd и spamassassin, команда accept собирает входящие сообщения электронной почты и пересылает их в spamd (который запускает spamassassin). После обработки spamd / spamassasin сообщение подхватывается другой командой accept OpenSMTP, которая доставляется в dovecot. Хотя это работает, есть некоторые нежелательные побочные эффекты, которые, если их не исправить, могут привести к уязвимостям:

1) spamd / spamassassin будет обрабатывать все входящие сообщения для моего домена, а также сообщения для получателей этого домена, которых не существует.Spamd/spamassassion — не совсем «легкие» задачи. Вместе это увеличивает возможности для DOS-атаки.

2) Все входящие сообщения для моего домена сначала принимаются. В случае неизвестных получателей это будет обнаружено только после обработки spamd / spamassassin. Как только неизвестный получатель будет обнаружен, демон почтовой программы отправит отправителю электронное письмо со статусом доставки, в котором будет указано, что получатель неизвестен. Это позволяет злоумышленнику использовать мой сервер для отправки электронной почты, похожей на спам, любому допустимому получателю, отправив электронное письмо на мой сервер с любым допустимым адресом электронной почты в качестве отправителя и любым недействительным получателем в моем домене.

Вопросы:

  • Есть ли способ настроить OpenSMTPD таким образом, чтобы он немедленно отклонял неизвестных получателей (т. е. как часть первоначальной отправки в OpenSMTPD), даже если включены spamd / spamassassin?
  • Можно ли как-нибудь заставить сервер НЕ отправлять сообщения об отклонении для несуществующих получателей?

С уважением,

2
задан 15 July 2017 в 09:21
1 ответ

В новом синтаксисе opensmtpd 6.4+ я тоже задавался этим вопросом. В настоящее время у меня был файл со всеми моими доменами, и у меня было только правило, которое гарантировало, что я буду получать электронную почту -только для своих доменов. Это позволяет отправлять сообщения для пользователей, которые могут не существовать, что приводит к возврату сообщений о возврате.

table vdoms  "/mail/db/vdomains"
...
match from any for domain <vdoms> action your_spam_filter_action

Чтобы ограничить только ваших пользователей, вам нужно иметь таблицу всех ваших действительных адресов электронной почты -, а затем использовать rcpt-toдля вашего сопоставления. Это может быть дублирование некоторой информации, которая у вас уже есть в других таблицах псевдонимов/пользователей.

Предположим, что у вас есть таблица /etc/mail/addrs:

bob@example.com
mary@example.com
sue@example.net

В вашем smtpd.confвам понадобится

table addrs  "/mail/db/addrs"
...
...
match from any for rcpt-to <addrs> action your_spam_filter_action

Теперь opensmtp будет отклонять электронную -почту по команде RCPT TO: <wrongperson@example.com>, а не принимать ее и позже отправив отказ.

0
ответ дан 19 September 2021 в 03:59

Теги

Похожие вопросы