Предотвращение ненужных скачков с OpenSMTPD на OpenBSD

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

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

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

1) spampd / spamassassin будет обрабатывать все входящие сообщения для моего домена, в том числе и для получателей в этом домене, которые не существуют. Spampd/spamassassion не совсем "легкие" задачи. Вместе это увеличивает возможности для атаки DOS.

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

Вопросы:

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

С уважением,

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>команду, вместо того, чтобы принять ее и позже отправить отказ.

Другие вопросы по тегам