Serveur SMTP sortant léger

46

Qu'utilisez-vous comme SMTP léger pour les courriels sortants uniquement?

J'utilise une application qui envoie des courriers électroniques via SMTP lorsque des événements se produisent de temps en temps, et je n'ai pas besoin d'un serveur de messagerie complet.

EDIT: Je suis plus qu'heureux d'utiliser quelque chose comme postfix (et faire), si c'est le meilleur choix. Je pensais qu'il y avait peut-être quelque chose de beaucoup plus simple, qui s'épuise.

FlappySocks
la source
Je pense qu'il est parfaitement raisonnable de s'en tenir à quelque chose comme exim et postfix. Ils ne sont pas difficiles à configurer si vous faites des choses simples.
Faheem Mitha
Quelle est votre définition de "poids léger"? Quelle taille attendez-vous que les messages soient? Combien de fois est "de temps en temps"?
Mike B

Réponses:

22

Il existe plusieurs choix d'agents de transfert de courrier (MTA, ou "serveurs de courrier") minimaux et à relais uniquement, dont certains ont été mentionnés dans d'autres réponses:

Pour que l'un ou l'autre fonctionne, vous avez besoin d'un MTA à part entière qui transmettra vos messages (appelé "hub de messagerie") et il est vivement recommandé de contrôler ce hub de messagerie. Bad Things ™ peut arriver autrement.


la source
esmtp n'est plus maintenu.
Nikola Kotur
1
nullmailer a un problème de conformité SMTP grave: il tente à nouveau infiniment lorsqu'il reçoit une erreur permanente SMTP. Cela peut vous coûter de l' argent réel si vous payez pour la bande passante / transit bugs.debian.org/cgi-bin/bugreport.cgi?bug=329192
telent
@telent: vous ne devez pas utiliser nullmailer dans un tel scénario.
Merci! Le guide de configuration de troubleshooters.com/linux/nullmailer note un problème de sécurité lié à nullmailer: il expose les mots de passe sur la ligne de commande, ou du moins, est habitué à le faire. D'autres conversations notent que mstmp explique un peu moins comment mettre en file d'attente le courrier que nullmailer.
nealmcb
11

À mon humble avis, le moyen le plus simple de le faire est avec postfix. Vous pouvez le configurer comme un relais sortant léger avec ces commandes:

postconf -e relayhost=other.mailserver.com
postconf -e myorigin=my.domainname.com

Tant que le serveur SMTP spécifié dans relayhostne nécessite pas d'authentification, vous permet de relayer ou est une destination valide pour l'adresse du destinataire, cela fonctionnera.

Le myoriginparamètre sera le nom de domaine par défaut. Donc, si vous envoyez un mail à foo, il ira à [email protected]. Le courrier envoyé par la barre d’utilisateur sera à partir de [email protected].

Si vous devez vous authentifier et que vous souhaitez prendre en charge TLS, exécutez également les commandes suivantes:

postconf -e smtp_tls_security_level=may
postconf -e smtp_sasl_auth_enable=yes
postconf -e smtp_sasl_password_maps=pcre:/etc/postfix/sasl_password_maps

Alors en /etc/postfix/sasl_password_mapsavoir ce contenu:

/./ username:password

Tous les messages seront envoyés à votre hôte relais avec le nom d'utilisateur et le mot de passe spécifiés.

bahamat
la source
J'ai essayé ces paramètres et j'ai eu une erreur: "erreur: type de dictionnaire non supporté: pcre"
valentt
1
Installez pcre et / ou postfix-pcre et réessayez.
bahamat
Je l'ai compris, entre temps, il manquait deux paquets. Le premier est postfix-pcre, comme vous l'avez dit, mais l'autre était étrange - libsasl2-modules. Je suis perplexe de savoir comment libsasl2 et libsasl2-modules-db ont été installés, mais il manquait libsasl2-modules ... Maintenant tout fonctionne. Pouvez-vous s'il vous plaît ajouter cette information cruciale à votre réponse?
valentt
1
Pour tls, j’ai aussi utilisé: relayhost=other.mailserver.com:465then smtp_tls_wrappermode=yesand smtp_tls_security_level=encryptbut essayant d’utiliser l’utilisateur local comme auth. Je dois réécrire l'utilisateur auth en quelque sorte.
tu-Reinstate Monica-dor duh
"Tant que le serveur SMTP spécifié dans relayhost ne nécessite pas d'authentification" -> ok, mais c'est rarement le cas de nos jours. Votre suggestion est correcte, mais surtout non pertinente!
FarO
9

En supposant que vous ayez besoin d’un programme exécutable à partir du shell, tel que sendmail (8), MSMTP répondra peut -être à vos besoins? Il peut se connecter à un serveur SMTP distant et envoyer un courrier en stdin, tout comme sendmail.

Michael Ratanapintha
la source
J'utilise MSMTP pour cela, fonctionne très bien et la configuration est très simple.
dsp
Je suis ravi que vous ayez recommandé cela. Je cherche quelque chose comme ça depuis un bon moment maintenant. La configuration de sendmail est bien trop différenciée pour mes besoins.
ixtmixilix
4

ESMTP est un serveur de transfert de courrier relais uniquement qui peut fonctionner pour votre application.

Moberley
la source
1
projet semble mort à partir de 2009
SHernandez
2

Vous pouvez trouver sSMTP adapté à vos besoins. Lisez cet article sur ce sujet et ses limites.

Honnêtement cependant, je ne serais pas trop stressé pour installer postfix ou exim, même si ce n’est que pour envoyer des emails.

Evan
la source
1
+1 pour ssmtp, -1 pour le commentaire inutile de sendmail, ainsi que pour l'utilisation d'un mta complet, ce qui est beaucoup plus difficile à exécuter correctement. Les serveurs de messagerie mal configurés et mal entretenus font que la vie de nous, administrateurs de courrier, est un enfer.
@hop: Je ne suis pas d'accord sur les deux points. sendmail est affreux. Aussi, par exemple, exim est la valeur par défaut de Debian et son utilisation est simple. Postfix aussi, probablement, mais je ne l'ai jamais utilisé.
Faheem Mitha
1

Techniquement, vous n'avez pas besoin d'un serveur de messagerie sur votre hôte. Ce dont vous avez besoin (et dont vous disposez probablement déjà) est un client smtp (ou MUA) pouvant se connecter au serveur SMTP de votre entreprise (où que vous soyez). .)

En fonction de l'application (et du langage de programmation dans lequel elle a été écrite), votre application peut se connecter de différentes manières au serveur "the" SMTP de votre réseau.

Généralement, avec PHP ou Python, il existe un fichier de configuration avec l'application pour spécifier le serveur "SMTP" (qui peut se trouver sur votre hôte ou ailleurs sur votre réseau.) Si vous avez déjà un serveur de messagerie sur le réseau, pointez simplement le configuration à ce serveur.

Si aucune autre option n'existe, l'application peut générer le message électronique en sortie standard que vous pouvez traiter avec quelque chose comme:

listoftargets = "[email protected] [email protected]" echo "Test Content" | mail -s "Test Subject" $ listoftargets

Sur certains systèmes, il existe déjà un serveur de messagerie minimal pour l'envoi uniquement.

Sam T.

samt
la source
J'ai toute une série de serveurs dans le nuage et je voulais vraiment que chacun ait son propre serveur SMTP sortant, plutôt que de compter sur quelque chose d'extérieur. De cette façon, si mon serveur SMTP distant est en panne, cela n’affecte pas tous les serveurs.
FlappySocks
1) Si vous laissez PHP ou Python faire la partie smtp, vous devez effectuer tout le travail (mise en file d'attente, traitement des erreurs) qu'un MTA pourrait gérer. 2) à la fin, vous contredisez ce que vous dites au début
Certaines applications Linux sont configurés pour attendre mailou sendmailexecutables nommés. Notifications système. C'est tout le problème, n'est-ce pas? Pour toute autre chose, il n'y a pas de contrainte.
Craig Hicks