У меня есть два ящика, на которых запущена sendmail и настроена как:
mta.xyz.com
)mda.xyz.com
)MTA не хранит электронные письма, он пересылает все в MDA.
Итак, предположим, что есть входящее электронное письмо на несуществующую учетную запись. bla@xyz.com
:
Поток кажется разумным. Электронное письмо отклоняется с ошибкой 550 в исходном соединении, а отправитель (спамер) правильно уведомляется о проблеме. Что меня беспокоит, так это то, что MTA отправляет каждое отклоненное письмо на postmaster
, на который приходится несколько десятков нежелательных писем в день. MDA ничего не отправляет, он просто отклоняет письмо. И я рад, что они оба зарегистрировали отклонения в журналах, но как я могу убедить MTA просто игнорировать 550 User unknown error, которые он получает от MDA?
Моя первоначальная мысль заключалась в том, чтобы принимать только определенные адреса электронной почты, но MTA, чтобы принимать электронные письма, должен быть настроен для использования xyz.com
как его локальный домен. Это означает, что любые почтовые таблицы и файлы доступа пропускаются (насколько я могу судить).
Итак, теперь я думаю о добавлении в MTA некоторых правил sendmail для приема писем только определенным получателям. Я надеюсь, что если MTA откажется сначала от них, то почтмейстеру ничего не будет.
Что бы вы сделали? Кто-нибудь может помочь с правилами sendmail?
Конфигурация MTA:
DOMAIN(generic)
LOCAL_DOMAIN(`xyz.com')
FEATURE(access_db, `hash -o -T<TMPF> /etc/mail/access')
dnl FEATURE(local_lmtp)
define(`confDOMAIN_NAME', `xyz.com')
(... some cert-related and other unrelated config ...)
define(`confNO_RCPT_ACTION', `add-to-undisclosed')
define(`confPRIVACY_FLAGS', `authwarnings,noexpn,novrfy')
define(`MAIL_HUB', `mda.xyz.com.')
define(`SMART_HOST', `mda.xyz.com.')
define(`confFORWARD_PATH', `')
dnl MAILER(local)
MAILER(smtp)
Файл доступа MTA:
Connect:[127.0.0.1] OK
To:xyz.com RELAY
Конфигурация MDA:
DOMAIN(generic)
FEATURE(access_db, `hash -o -T<TMPF> /etc/mail/access')
FEATURE(blacklist_recipients)
FEATURE(`use_cw_file')
FEATURE(`smrsh')
dnl FEATURE(local_lmtp)
dnl FEATURE(mailertable, `hash -o /etc/mail/mailertable')
FEATURE(virtusertable, `hash -o /etc/mail/virtusertable')
FEATURE(`local_procmail_lmtp')
(... some cert-related and other unrelated configs ...)
define(`confNO_RCPT_ACTION', `add-to-undisclosed')
define(`confPRIVACY_FLAGS', `authwarnings,noexpn,novrfy')
MAILER(local)
MAILER(smtp)
MAILER(procmail)
Файл доступа MDA:
To:xyz.com OK
From:192.168 OK
Virtualusertable MDA:
# In 'aliases' those are redirected to procmail
user1@xyz.com user1-xyz-com.virtual
user2@xyz.com user2-xyz-com.virtual
Имена локальных хостов MDA:
xyz.com
somesubdomain.xyz.com
Оказалось намного проще, чем я думал изначально. Просто убедитесь, что в вашем sendmail.cf
:
FEATURE(access_db, `hash -o -T<TMPF> /etc/mail/access' `relaytofulladdress')
FEATURE(blacklist_recipients)
Обратите внимание relaytofulladdress
.
Теперь вы можете выборочно принимать определенные адреса и отклонять остальные в access
:
Connect:[127.0.0.1] OK
To:user1@xyz.com RELAY
To:postmaster@xyz.com RELAY
To:xyz.com REJECT
Обратите внимание Connect
вход для приема локальной электронной почты, а также postmaster@
принимать любые электронные письма от администрации (аналогично для webmaster@
и другие, если вы их используете).