Назад | Перейти на главную страницу

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

Было бы неплохо отклонять входящие электронные письма, которые используют один из моих виртуальных доменов в качестве адреса отправителя, не являясь моим законным пользователем.

Я знаю, что могу отклонять входящие электронные письма, в которых используется существующий псевдоним / имя учетной записи, используя smtpd_sender_restrictions=reject_sender_login_mismatch, однако это по-прежнему позволяет злоумышленникам использовать несуществующий адрес электронной почты с одним из моих виртуальных доменов. (Что предпочтительнее в отношении обнаружения спама).

Как лучше всего отклонять входящую почту, которая использует один из моих виртуальных доменов и не аутентифицируется для этого?

SPF и DKIM настроены, но настроены на SoftFail из-за проблем со списками рассылки и пересылками. Я ищу не SPF или DKIM, а решение для сервера postfix, который является MX вышеупомянутых доменов.

Я нашел два возможных метода, но, возможно, есть способ получше.

1-й способ:

smtpd_sender_restrictions =
    reject_sender_login_mismatch,
    permit_sasl_authenticated,
    permit

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

table = domain
query = SELECT username AS allowedUser FROM mailbox WHERE username="%s" AND deleted_at IS NULL \
UNION SELECT goto FROM alias WHERE address="%s" AND active = 1 \
UNION select 'admin' from domain where domain = '%d'

2-й способ:

В этом подходе используется check_sender_access поиск, который возвращает действие отклонения, если домен является виртуальным, а пользователь не sasl_authenticated.

smtpd_sender_restrictions =
    reject_sender_login_mismatch,
    permit_sasl_authenticated,
    check_sender_access proxy:mysql:$config_directory/mysql_reject_virtual_domains.cf,
    permit

mysql_reject_virtual_domains.cf:

table = domain
query = select 'Reject 530 SMTP authentication is required' from domain where domain = '%d'

3-й способ (спасибо Masegaloeh):

smtpd_sender_restrictions =
    reject_sender_login_mismatch,
    permit_sasl_authenticated
    reject_unlisted_sender,
    permit

Я не знаю сколько cpu-load / SQL-запросов reject_unlisted_sender генерирует, поскольку проверяет довольно много вещей:


Запросить, чтобы SMTP-сервер Postfix отклонял почту от неизвестных адресов отправителя, даже если нет явного reject_unlisted_sender ограничение доступа указано. Это может замедлить распространение поддельной почты от червей или вирусов.

Адрес всегда считается "известным", если он соответствует виртуальному (5) псевдониму или каноническому (5) отображению.

  • Домен отправителя соответствует $ mydestination, $ inet_interfaces или $ proxy_interfaces, но отправитель не указан в $ local_recipient_maps, а значение $ local_recipient_maps не равно нулю.
  • Домен отправителя соответствует $ virtual_alias_domains, но отправитель не указан в $ virtual_alias_maps.
  • Домен отправителя соответствует $ virtual_mailbox_domains, но отправитель не указан в $ virtual_mailbox_maps, а значение $ virtual_mailbox_maps не равно нулю.
  • Домен отправителя соответствует $ relay_domains, но отправитель не указан в $ relay_recipient_maps, а значение $ relay_recipient_maps не равно нулю.

Вы должны попытаться реализовать хотя бы одно из следующего (лучше оба):

Правильный способ - настроить SPF для вашего домена и включить SPF в MTA. Тогда вы получите защиту не только для вашего собственного домена, но и для всех других доменов с включенным SPF.

Еще один 1-й метод с отдельным запросом без объединений:

virtual_sender_mailbox_maps.cf

query = SELECT '%s' AS email FROM domains WHERE name='%d' AND active=TRUE

main.cf

smtpd_sender_login_maps = ${proxysql}virtual_sender_mailbox_maps.cf
smtpd_sender_restrictions =
    reject_sender_login_mismatch,
    permit_sasl_authenticated,
    permit