J'ai un serveur postfix correctement configuré pour permettre à mon courrier entrant à mon domaine et d'exiger l'authentification afin d'envoyer un courrier à tout autre réseau.
Un grand nombre de spams que je reçois a une adresse forgée "de" des utilisateurs inexistants de mon propre domaine. SPF pourrait arrêter cela et j'ai configuré SPF dans mon DNS, mais je ne suis pas sûr de vouloir aller la voie de bloquer complètement tout le SPF échoue au niveau SMTP.
Existe-t-il un élément de configuration postfix rapide que je peux ajouter qui rejeterait le courrier électronique entrant qui vient de Mydomain et n'était pas authentifié?
Pour être très précis, c'est mon postfix Conf:
smtpd_relay_restrictions = permit_sasl_authenticated, reject_unauth_destination
smtpd_recipient_restrictions =
permit_sasl_authenticated,
reject_invalid_hostname,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_sender_domain,
reject_unknown_recipient_domain,
reject_rhsbl_sender dbl.spamhaus.org,
permit
smtpd_sender_restrictions = reject_unknown_sender_domain
smtpd_helo_restrictions = reject_unknown_helo_hostname, reject_invalid_helo_hostname
pourtant, il est toujours possible de se connecter au port 25 et
MAIL FROM: [email protected] RCPT TO: [email protected]
Sans authentification.
Si vous activez le service de soumission de message de Postfix (sur le port 587), vous pouvez séparer "Soumission de message du relais de message, permettant à chaque service de fonctionner en fonction de ses propres règles (pour la sécurité, la stratégie, etc.)" ( RFC 4409 ).
Dans cette configuration, étant donné que les utilisateurs légitimes doivent s'authentifier pour utiliser le port 587 pour la soumission de message, vous pouvez refuser en toute sécurité le courrier spoofé et non authentifié soumis via le port 25.
Pour activer la soumission de message (SASL-authentifié) sur le port 587, ajoutez une section comme ci-après au Master.cf de Postfix:
submission inet n - n - - smtpd
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/auth
-o smtpd_sasl_security_options=noanonymous
-o smtpd_sasl_local_domain=$myhostname
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o smtpd_sender_login_maps=hash:/etc/postfix/virtual
-o smtpd_sender_restrictions=reject_sender_login_mismatch
-o smtpd_recipient_restrictions=reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_sasl_authenticated,reject
( Source )
Ensuite, créez une table d'accès postfix (sur/etc/postfix/accès) spécifiant comment Postfix doit répondre à certains expéditeurs:
[email protected] OK
[email protected] HOLD
mydomain.com REJECT
Voir la page access
Pour plus de détails.
Run postmap
sur le fichier d'accès (pour créer une table de recherche indexée):
postmap /etc/postfix/access
Ajouter appropriée restrictions de l'expéditeur à main.cf:
smtpd_sender_restrictions = permit_sasl_authenticated,
check_sender_access hash:/etc/postfix/access
Enfin, rechargez la nouvelle configuration. Sur les systèmes basés sur Debian, cela est fait en utilisant:
Sudo service postfix reload
Existe-t-il un élément de configuration postfix rapide que je peux ajouter qui rejeterait le courrier électronique entrant qui vient de Mydomain et n'était pas authentifié?
Pas si rapide, mais vous pouvez implémenter une stratégie simple SMTPD et choisir le sender
et sasl_username
Et vérifiez si le premier provient de votre domaine et que le second existe et vient également de votre domaine, le cas échéant, retour DUNNO
, sinon, REJECT
. De cette façon, vous vous assurez que pour tout courrier entrant, s'il s'agit de vos utilisateurs, il doit être authentifié SASL.
Pour être très précis, c'est mon postfix Conf:
Il y a quelques éléments supplémentaires que vous pouvez ajouter à votre smtpd_recipient_restrictions
Politique d'essayer d'arrêter le spam et d'améliorer votre sécurité:
smtpd_sender_restrictions =
permit_mynetworks
reject_unknown_sender_domain
reject_sender_login_mismatch
reject_unauth_pipelining
reject_non_fqdn_sender
permit
Quels moyens peuvent être trouvés dans la page Postfix Configuration Paramètres page.
Vous voudrez peut-être inclure certains éléments supplémentaires pour arrêter le spam:
SPF
est l'un d'entre eux, mais je suis d'accord que le blocage de tout test de non-correspondance est assez lourd que certains listes de messagerie mal implémentés envoient des courriers électroniques avec l'adresse de l'expéditeur d'origine de leurs serveurs afin qu'ils échouent.
DKIM
est également très puissant (check OpenDKIM
).
SpamAssassin
pourrait être très utile dans ce cas. Il ne bloquera pas le courrier, mais il sera ajouté une en-tête de spam et, par conséquent, être classée.
Vous n'avez pas fourni de message postfix d'une de ces tentatives spoofed, mais vous pouvez vérifier s'ils proviennent de la même adresse IP ou du moins une adresse CIDR concrete et de les mettre dans une liste noire avec le smtpd_client_restrictions
Paramètre.
Même peut être appliqué sur le HELO/EHLO
message et pourrait être placé dans smtpd_helo_restrictions
.
Comme vous pouvez le constater, vous pouvez peut-être trouver une combinaison d'entre eux qui convient à votre cas et arrêtez toutes les tentatives de spoofed.
J'ai trouvé une façon de le résoudre, bien que je suis curieux si quelqu'un a une réponse plus directe/simple.
J'ai utilisé le reject_sender_login_mismatch
Réglage de sorte que si Postfix puisse trouver un mappage de l'adresse "de" à un nom d'utilisateur, il nécessite que ce nom d'utilisateur soit authentifié.
Ensuite, la tâche consiste à créer une carte qui gère toutes les adresses @MyDomain, mais qui permet correctement aux utilisateurs locaux envoi de courrier pour leur adresse.
Sur ma configuration particulière, j'utilise
virtual_alias_maps = sqlite:/etc/postfix/db-public-alias.cf pcre:/etc/postfix/db-public-alias-regex.cf
pour cartographier les adresses aux utilisateurs réels.
J'ai ajouté une autre base de données d'adresse pcre:/etc/postfix/db-sender-logins-fallback.cf
qui a une regex de tous mes domaines à mon utilisateur principal. Alors maintenant, alors combiné:
smtpd_sender_login_maps = sqlite:/etc/postfix/db-public-alias.cf pcre:/etc/postfix/db-public-alias-regex.cf pcre:/etc/postfix/db-sender-logins-fallback.cf
smtpd_sender_restrictions = reject_unknown_sender_domain, reject_sender_login_mismatch
chaque alias ne peut être envoyé de l'utilisateur qu'à partir de l'utilisateur qui est acheminé et que toutes les autres adresses de mes domaines ne peuvent être envoyées que de mon compte d'utilisateur principal, et donc tout spammer qui tente d'envoyer de: Mon domaine échouera parce qu'ils ne sont pas enregistrés en tant que moi.
Bien que cela soit une bonne amélioration de mon configuration de messagerie (les utilisateurs locaux ne peuvent plus s'impressionner l'autre chose), il pourrait être trop compliqué pour les personnes ayant des configurations de compte d'utilisateur très avancées. Je suis toujours curieux s'il y a un moyen de dire "pour que ces domaines à partir de :, utilisateur doivent être connectés".
Ma section d'authentification Conf. Fonctionne bien:
smtpd_sender_restrictions =
reject_non_fqdn_sender
reject_sender_login_mismatch
reject_unknown_sender_domain
reject_unauth_pipelining
reject_non_fqdn_sender
reject_unlisted_sender
reject_unverified_sender
permit_sasl_authenticated
reject_unknown_reverse_client_hostname
reject_unknown_client_hostname
smtpd_recipient_restrictions =
permit_sasl_authenticated
reject_unauth_destination
reject_rbl_client zen.spamhaus.org
reject_rhsbl_reverse_client dbl.spamhaus.org
reject_rhsbl_helo dbl.spamhaus.org
reject_rhsbl_sender dbl.spamhaus.org
smtpd_relay_restrictions =
permit_sasl_authenticated
reject_unauth_destination
smtpd_helo_required = yes
smtpd_helo_restrictions =
permit_sasl_authenticated
reject_invalid_helo_hostname
reject_non_fqdn_helo_hostname
reject_unknown_helo_hostname