web-dev-qa-db-fra.com

Rejeter les courriels entrants qui utilisent votre propre domaine comme émetteur

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.

7
Zulakis

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).

  • Le domaine de l'expéditeur correspond à la myDestination $, $ inet_interfaces ou $ proxy_interfaces, mais l'expéditeur n'est pas répertorié en $ local_recipient_maps, et $ local_recipient_maps n'est pas null.
  • Le domaine de l'expéditeur correspond à $ virtual_alias_domains mais l'expéditeur n'est pas répertorié en $ virtual_alias_maps.
  • Le domaine de l'expéditeur correspond à $ virtual_mailbox_domains mais l'expéditeur n'est pas répertorié dans $ virtual_mailbox_maps, et $ virtual_mailbox_maps n'est pas null.
  • Le domaine de l'expéditeur correspond à Relay_Domains, mais l'expéditeur n'est pas répertorié en $ relais_recipient_maps et $ relais_recipient_maps n'est pas NULL.

10
Zulakis

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
1
Oleg Kr

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.

1
Kondybas

Vous devriez essayer de mettre en œuvre au moins l'un des suivants (les deux est meilleur):

1
alexus