Вот проблема: с любого IP-адреса, не принадлежащего вашему почтовому серверу:
telnet me.myemailserver.com 25
helo me.someserver.com
mail from: <yourusername@mydomain.com>
rcpt to: <yourusername@mydomain.com>
data
This is spam. Buy my stuff.
.
Я использую Postfix. У меня возникла проблема с поиском решения, требующего SMTP-AUTH для электронной почты, якобы отправленной с mydomain.com.
Погуглив, этот парень обнаружил ту же проблему (где я вырезал и вставил с некоторыми изменениями) в приведенном выше примере из: http://www.smartertools.com/forums/t/13182.aspx
Эта ссылка http://marc.info/?l=postfix-users&m=122814832915131&w=2 приближается к решению, но у него есть побочный эффект, заключающийся в том, что требуется SMTP-AUTH для почты не с mydomain.com. Для почты, не утверждающей, что она отправлена с mydomain.com, я бы сделал обычную фильтрацию RBL и спама.
Короче говоря, я хочу отклонить почту на локальные домены (mydomain.com) от внешних / неаутентифицированных клиентов, утверждающих, что они из локальных доменов (mydomain.com).
Это то, что я пробовал: я пробовал как разрешить, так и отклонить по умолчанию. Вот точная выдержка из моего main.cf:
smtpd_recipient_restrictions = reject_unauth_pipelining,
permit_sasl_authenticated,
check_recipient_access pgsql:/etc/postfix/pgsql-recipient.cf,
reject_unauthenticated_sender_login_mismatch,
reject_unauth_destination,
reject_unlisted_recipient,
check_sender_access pgsql:/etc/postfix/pgsql-sender.cf,
reject_unlisted_sender,
reject_invalid_hostname,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_sender_domain,
reject_unknown_recipient_domain,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client sbl.spamhaus.org,
reject_rbl_client sbl-xbl.spamhaus.org,
reject_rbl_client bl.spamcop.net,
reject_rbl_client dnsbl.njabl.org,
reject_rbl_client blackholes.wirehub.net,
reject_rbl_client relays.mail-abuse.org,
reject_rbl_client dialups.mail-abuse.org,
reject_rbl_client blackholes.mail-abuse.org,
reject_rhsbl_sender dsn.rfc-ignorant.org,
(reject and permit both tried here)
Я бы попробовал что-то вроде этого:
/etc/postfix/main.cf:
smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated, check_sender_access hash:/etc/postfix/access_table, ..., permit
/etc/postfix/access_table:
mydomain.com REJECT You're not me!
Теория такая:
Если они уже прошли аутентификацию, они запускают permit_sasl_authenticated
правила и разрешены. Если они не аутентифицированы, он переходит к check_sender_access
правило. Если домен отправителя совпадает с "mydomain.com", отправитель отклоняется. (Таким образом, неавторизованный + ПОЧТА ОТ "mydomain.com" = отклонить.) Если это какой-либо другой домен, он продолжается согласно остальным вашим правилам.
ПРИМЕЧАНИЕ: это не проверено. Я бы приклеил warn_if_reject
перед этим check_sender_access
перед тем, как попробовать его в производственной системе.
На одном сервере, где у меня есть postfix с Dovecot с данными аутентификации в MySQL, я сделал следующее в main.cf:
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject
Вы можете использовать SPF, чтобы избежать этой проблемы. Он проверит, авторизован ли IP-адрес, который пытается отправить электронное письмо с использованием вашего домена. Вот хорошее руководство, которому вы можете следовать
https://www.linode.com/docs/email/postfix/configure-spf-and-dkim-in-postfix-on-debian-8/