Il serait agréable de rejeter les courriels entrants qui utilisent l'un de mes domaines virtuels comme adresse de l'expéditeur sans être un utilisateur légitime.
Je sais que je peux rejeter les courriels entrants qui utilisent un nom d'alias/compte existant à l'aide de smtpd_sender_restrictions=reject_sender_login_mismatch
, cela permet de toujours permettre aux assaillants d'utiliser une adresse e-mail non existante avec l'un de mes domaines virtuels. (Ce qui est favorisé en matière de détection de spam).
Quelle est la meilleure façon de rejeter les courriers entrants qui utilisent l'un de mes domaines virtuels et ne sont pas authentifiés à le faire?
SPF ainsi que DKIM sont configurés mais configurés en softfail, en raison de problèmes de mailinglists et d'avance. Je ne cherche pas SPF ou DKIM, mais une solution pour le serveur Postfix qui est le MX du MX du domaines.
J'ai trouvé deux méthodes possibles, mais peut-être qu'il y a une meilleure façon.
1ère méthode:
smtpd_sender_restrictions =
reject_sender_login_mismatch,
permit_sasl_authenticated,
permit
Maintenant j'ai modifié mon smtpd_sender_login_maps
Pour renvoyer une entrée de admin
si le domaine existe dans la table des domaines. De cette façon, un enregistrement est renvoyé, même lorsque le courrier électronique n'existe pas comme Maibox/alias, mais pas lorsqu'un domaine étranger est l'adresse de l'adresse.
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'
2e méthode:
Cette approche utilise un check_sender_access
Recherche qui retourne une action de rejet si le domaine est un ancien et que l'utilisateur n'est pas 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ème méthode (grâce à MASEGALOEH ):
smtpd_sender_restrictions =
reject_sender_login_mismatch,
permit_sasl_authenticated
reject_unlisted_sender,
permit
Je ne sais pas combien de CPU-Charger/SQL-QUERIES REJECT_UNLISTED_SENDER génère, car elle vérifie beaucoup de choses:
Demander que le serveur SMTP postfix rejette le courrier à partir d'adresses de l'expéditeur inconnus, même lorsqu'il n'est pas explicite reject_unlisted_sender
La restriction d'accès est spécifiée. Cela peut ralentir une explosion d'un courrier forgé à partir de vers ou de virus.
Une adresse est toujours considérée comme "connue" lorsqu'elle correspond à un alias virtuel (5) ou à un mappage canonique (5).
Encore une autre première méthode avec une requête séparée sans syndicats:
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
La manière juste est de configurer SPF pour votre domaine et d'activer le SPF dans le MTA. Ensuite, vous obtiendrez une protection non seulement pour votre propre domaine de forgeage, mais aussi pour tous les autres domaines ayant activé SPF.
Vous devriez essayer de mettre en œuvre au moins l'un des suivants (les deux est meilleur):