Заставить Postfix отклонять To:mydestination из сети, но принимать, если отправлено локально, и по-прежнему принимать To:virtual_mailbox_domains из сети

Заставить Postfix отклонять To:mydestination из сети, но принимать, если отправлено локально, и по-прежнему принимать To:virtual_mailbox_domains из сети

У меня почти идеальная настройка Postfix (v3.3.1) на CentOS8. Мои цели:

  • Разрешить службам отправлять электронные письма пользователям Linux. (crontab для root)
  • Не принимайте публичную электронную почту для пользователей Linux. ([email protected])
  • Определите, какие пользователи будут получать публичную электронную почту, не создавая для них пользователей Linux.

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

myhostname = server.foobar.com
mydomain = foobar.com
myorigin = $myhostname
mydestination = $myhostname, localhost
mail_spool_directory = /var/spool/mail

virtual_transport = virtual
virtual_mailbox_domains = foobar.com
virtual_mailbox_base = /var/spool/email/

Этот бит сообщает Postfix, что к любому сообщению, отправленному службой пользователю, добавляется $myhostname ([email protected]) и он доставляется на стандартный системный адрес электронной почты в формате /var/spool/mail.

Любое электронное письмо, отправленное пользователю Linux в домене как[email protected]рассматривается как виртуальный домен, ищет виртуального пользователя и, если его нет, отклоняет электронное письмо.

Если я добавлю виртуального пользователя (например, веб-мастера), любое электронное письмо, отправленное этому пользователю ([email protected]) принимается и доставляется для /var/spool/email/...сохранения общедоступной электронной почты отдельно от системной электронной почты.


Проблема...

Если кто-то будет достаточно мудр, чтобы отправить электронное письмо на имя хоста ([email protected]) из интернета он принимается и доставляется в /var/spool/mail. Я не могу понять, как это заблокировать.


Я пробовал настраивать, default_transport = error:Domain doesn't accept email.но это не изменило поведение. Документация не поддерживает эту функцию, но я видел, что она упоминается на форуме, поэтому я попробовал.

Для меня не важно, чтобы пользователи Linux хранились в формате user@$myhostname, просто это был единственный способ, с помощью которого я смог понять, как отделить пользователей Linux от виртуальных пользователей на том же доменном имени, чтобы предотвратить атаки спамеров.[email protected],[email protected], и т. д.

Другие параметры конфигурации, если они важны:

html_directory = no
local_recipient_maps =
luser_relay = postmaster
mail_spool_directory = /var/spool/mail
meta_directory = /etc/postfix
mydestination = $myhostname, localhost
mydomain = foobar.com
myhostname = server.foobar.com
mynetworks_style = host
myorigin = $myhostname
relay_domains =
relayhost =
virtual_mailbox_base = /var/spool/email/
virtual_mailbox_domains = foobar.com
virtual_transport = virtual

Есть ли какие-нибудь идеи или другие способы решения этой проблемы?

решение1

Я нашел решение.

Сохраняю myorigin = $myhostnameспособ разделения локальных пользователей от виртуальных пользователей в одном домене, как указано в моем вопросе.

В smtpd_recipient_restrictionsразделе main.cf, после permit_mynetworksдобавления check_recipient_accessуказания на список. Я использовал hash:, это выглядело примерно так:

# Don't include the "...", its just to show this is among other settings

smtpd_recipient_restrictions =
   ...
   permit_mynetworks
   check_recipient_access hash:/etc/postfix/block_mydomain
   ...

Затем создайте файл списка/хэша./etc/postfix/block_mydomain

hostname.domain.com     513 Invalid domain.

Сохраните файл и запустите его postmap block_mydomainдля создания версии *.db.

Затем перезапустите Postfix systemctl restart postfix, и это должно помочь.

Я проверил это, и я могу отправлять почту с помощью команды sendmail локально любому пользователю Linux. Crontab может отправлять почту локальным пользователям Linux. Но если вы отправляете письмо из Интернета на , [email protected]оно возвращается. И если вам интересно,[email protected]все равно принимается и отвергается.

Связанный контент