J'aimerais exécuter Postfix sur un VPS Debian pour envoyer des e-mails depuis mon application. L'application (fonctionnant sur d'autres VPS) se connecterait à Postfix via SMTP. Postfix n'a pas à gérer les e-mails entrants; il s'agit simplement d'envoyer les messages sortants.
Pour éviter d'être un relais ouvert, l'authentification SASL doit être utilisée. Cependant, je ne veux pas exécuter Dovecot ou MySQL pour l'authentification SASL.
Comment configurer l'authentification SASL à l'aide d'un fichier simple (contenant des noms d'utilisateur et des mots de passe)?
J'ai déjà trouvé une question similaire ; cependant, aucune réponse satisfaisante n'a été donnée.
Réponses:
Postfix ne prend actuellement en charge que deux méthodes d'authentification SASL. L'un d'eux est Dovecot, dont vous ne voulez pas. L'autre est Cyrus, qui est à peu près aussi proche de ce que vous voulez qu'il est possible d'obtenir sans réécrire Postfix. Cela implique d'exécuter un démon d'authentification distinct (
saslauthd
), mais le fichier d'authentification est facile à modifier et à mettre à jour.Les bases de l'utilisation de Cyrus SASL sont disponibles sur le site de documentation de postfix , mais voici une brève description. Veuillez regarder le lien si quelque chose est déroutant de quelque façon que ce soit!
Commencez par installer Cyrus SASL avec le plugin
sasldb
. (Comment faire cela est laissé comme un exercice pour le lecteur; il y a probablement un paquet dans n'importe quel système de paquetage que votre marque d'Unix utilise.) Puisque la communication entre Postfix et SASL se fera via une socket de domaine Unix, vous voudrez peut-être ajoutez le suffixe au groupe SASL et assurez-vous que ce groupe dispose des autorisations de lecture et d'exécution sur le répertoire/var/run/saslauthd
.Configurer SASL
Configurez SASL pour utiliser sasldb en modifiant /etc/sasl2/smtpd.conf:
Le plugin sasldb signifie que sasl utilisera un fichier Berkeley DB pour les noms d'utilisateur et les mots de passe. Vous ajoutez des utilisateurs avec la commande
saslpasswd2
:Notez que vous spécifiez un domaine avec le nom d'utilisateur et que l'utilisateur devra utiliser "[email protected]" plutôt que simplement "username" lors de l'authentification.
Vous pouvez vérifier quels utilisateurs ont été entrés en exécutant
sasldblistusers2
.Démarrez saslauthd et vérifiez que l'authentification fonctionne en faisant
Configurer Postfix
Une fois cela fait, dites à Postfix d'utiliser SASL et de dire à Cyrus que c'est SMTP qu'il s'authentifie, en éditant /etc/postfix/main.cf pour contenir
Ensuite, rechargez postfix, et vous devriez être réglé.
la source
sasldblistusers2
affiche correctement la liste des utilisateurs que j'ai ajoutés. Cependant, lors de l' exécutiontestsaslauthd
, je reçois ce résultat:0: NO "authentication failed"
. Savez-vous comment je pourrais résoudre ce problème? Ceci est de mon/var/log/auth.log
:saslauthd[30471]: do_auth : auth failure: [user=XXX@XXX] [service=smtpd] [realm=] [mech=pam] [reason=PAM auth error]
-s smtpd
. Si je metsMECHANISMS="sasldb"
en/etc/default/saslauthd
et redémarrer saslauthd, je reçois le même résultat testsaslauthd. Le journal d'authentification affiche un message différent:saslauthd[3706]: do_auth : auth failure: [user=XXX@XXX] [service=smtpd] [realm=] [mech=sasldb] [reason=Unknown]
testsaslauthd -u username -r example.com -p XXX
retours0: OK "Success."
. Maintenant, je vais vérifier si Postfix peut contourner ce problème…-s smtpd
vous lui ferez utiliser PAM au lieu de sasldb, alors ne faites pas ça ...SASL n'est qu'une des nombreuses façons d'empêcher cela. Un autre serait de mettre sur liste blanche les adresses IP que vous utilisez sur les autres VPS, ou d'exiger des certificats clients TLS (cela peut être considéré comme le moyen le plus sûr).
Il vous suffit de configurer une autorité de signature sur la machine postfix et de signer un certificat par VPS que vous souhaitez envoyer par e-mail.
Ensuite, exigez une vérification complète du certificat client pour tout le courrier soumis; désactiver toute autre méthode de soumission.
Ce que vous demandez n'est pas possible, car postfix ne prend pas directement en charge SASL.
la source
Clarifiant juste quelques choses,
Créer un compte dans sasldb:
Test de l'authentification:
(remarque: le nom d'utilisateur n'est pas suivi du fqdn)
Je voudrais également ajouter que la création d'un compte root
ne vous laissera pas authentifier,
Mais ce n'est pas un bug. C'est juste une caractéristique de sécurité.
la source
Si vous n'avez pas besoin de gérer le courrier entrant, ne vous embêtez pas avec l'authentification. Bloquez simplement le trafic entrant avec un pare-feu et / ou limitez-le à localhost uniquement.
Plus de problème de relais ouvert, et vous évitez également de compliquer les choses pour les applications qui doivent envoyer du courrier via postfix.
la source