Servidor SMTP saliente ligero

46

¿Qué utiliza como SMTP ligero para los correos electrónicos salientes únicamente?

Estoy ejecutando una aplicación que envía correos electrónicos a través de SMTP cuando ocurren eventos de vez en cuando, y no necesito un servidor de correo electrónico con todas las funciones.

EDITAR: estoy más que feliz de usar algo como postfix (y do), si esa es la mejor opción. Estaba pensando que puede haber algo mucho más simple, que se agota la caja.

FlappySocks
fuente
Creo que es perfectamente razonable seguir con algo como exim y postfix. No son difíciles de configurar si estás haciendo cosas simples.
Faheem Mitha
¿Cuál es su definición de "ligero"? ¿Qué tan grande esperas que sean los mensajes? ¿Con qué frecuencia es "de vez en cuando"?
Mike B

Respuestas:

22

Hay varias opciones de agentes mínimos de transferencia de correo de solo retransmisión (MTA o "servidores de correo"), algunos de los cuales se han mencionado en otras respuestas:

Para que cualquiera de ellos funcione, necesita un MTA completo en algún lugar que transmitirá aún más sus mensajes (conocido como "centro de correo") y se recomienda encarecidamente que controle este centro de correo. Bad Things ™ puede suceder de otra manera.


fuente
esmtp ya no se mantiene.
Nikola Kotur
1
nullmailer tiene un serio problema de cumplimiento de SMTP: vuelve a intentarlo infinitamente cuando se le da un error permanente de SMTP. Esto puede costarle dinero real si paga por ancho de banda / tránsito bugs.debian.org/cgi-bin/bugreport.cgi?bug=329192
telent
@telent: no debe usar nullmailer en tal escenario.
¡Gracias! La guía de configuración en troubleshooters.com/linux/nullmailer observa un problema de seguridad con nullmailer: expone las contraseñas en la línea de comandos, o al menos solía hacer eso. Otras conversaciones señalan que mstmp deja un poco menos claro cómo poner en cola el correo que nullmailer.
nealmcb
11

En mi humilde opinión, la forma más fácil de hacer esto es con postfix. Puede configurarlo como un relé saliente ligero con estos comandos:

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

Siempre que el servidor SMTP especificado relayhostno requiera autenticación, le permite retransmitir o es un destino válido para la dirección del destinatario, esto funcionará.

El myoriginparámetro será el nombre de dominio predeterminado. Entonces, si envía un correo a foo, irá a [email protected]. El correo enviado por la barra de usuario será de [email protected].

Si necesita autenticarse y desea admitir TLS, también ejecute los siguientes comandos:

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

Entonces en /etc/postfix/sasl_password_mapstener este contenido:

/./ username:password

Todo el correo será enviado a su servidor de retransmisión con el nombre de usuario y contraseña especificados.

bahamat
fuente
Intenté estas configuraciones y recibí un error: "error: tipo de diccionario no compatible: pcre"
vatto
1
Instale pcre y / o postfix-pcre e intente nuevamente.
bahamat
Me di cuenta, también mientras tanto, faltaban dos paquetes, el primero es postfix-pcre como dijiste, pero el otro era extraño: libsasl2-modules. Me sorprende cómo se instalaron libsasl2 y libsasl2-modules-db pero faltaban libsasl2-modules ... Ahora finalmente todo funciona. ¿Puedes agregar esta información crucial a tu respuesta?
Valentt
1
Para tls, también usé: relayhost=other.mailserver.com:465then smtp_tls_wrappermode=yesy smtp_tls_security_level=encryptpero está intentando usar el usuario local como autenticación. Tengo que reescribir el usuario de autenticación de alguna manera.
tu-Reinstate Monica-dor duh
"Siempre y cuando el servidor SMTP especificado en relayhost no requiera autenticación" -> ok, pero rara vez es el caso hoy en día. ¡Su sugerencia es correcta, pero sobre todo irrelevante!
FarO
9

Suponiendo que necesita un programa que pueda ejecutar desde el shell como sendmail (8), ¿quizás MSMTP se ajuste a sus necesidades? Se puede conectar a un servidor SMTP remoto y enviar el correo que recibe como stdin, al igual que sendmail.

Michael Ratanapintha
fuente
Utilizo MSMTP para esto, funciona muy bien y la configuración es muy simple.
dsp
Me alegra que hayas recomendado esto. He estado buscando algo así por bastante tiempo. La configuración de sendmail está demasiado diferenciada para mis necesidades.
ixtmixilix
4

ESMTP es un servidor de transferencia de correo de solo retransmisión que puede funcionar para su aplicación.

moberley
fuente
1
proyecto parece muerto a partir de 2009
SHernandez
2

Puede encontrar sSMTP adecuado para sus necesidades. Lea este artículo sobre él y sus limitaciones.

Honestamente, sin embargo, no estaría demasiado estresado por instalar postfix o exim, incluso si es solo para enviar correos electrónicos.

Evan
fuente
1
+1 para ssmtp, -1 para el comentario innecesario en sendmail, así como recomendar el uso de un mta completo, que es mucho más difícil de hacer bien. Los servidores de correo mal configurados y mantenidos hacen que la vida de los administradores de correo sea un infierno.
@hop: No estoy de acuerdo en ambos aspectos. sendmail es horrible Además, exim, por ejemplo, es el valor predeterminado de Debian, y es perfectamente fácil de usar. También es postfix, probablemente, pero nunca lo he usado.
Faheem Mitha
1

Técnicamente no necesita un servidor de correo electrónico en su host, lo que necesita (y probablemente ya tenga) es un cliente smtp (o MUA) que puede conectarse a su servidor SMTP corporativo (que podría estar en cualquier lugar al que pueda conectarse) .)

Dependiendo de la aplicación (y del lenguaje de programación en el que se escribió), hay muchas formas diferentes para que su aplicación se conecte al 'servidor' SMTP de su red.

Por lo general, con PHP o Python, hay un archivo de configuración con la aplicación para especificar el servidor "SMTP" (que puede estar en su host o en otra parte de su red). Si ya tiene un servidor de correo en la red, simplemente apunte el configuración a ese servidor.

Si no existen otras opciones, la aplicación puede generar el mensaje de correo electrónico a la salida estándar que puede procesar con algo como:

listoftargets = "[email protected] [email protected]" echo "Contenido de prueba" | mail -s "Test Subject" $ listoftargets

En algunos sistemas, ya hay un servidor de correo mínimo para enviar solo.

Sam T.

samt
fuente
Tengo un montón de servidores en la nube, y realmente quería que cada uno tuviera sus propios servidores SMTP salientes, en lugar de confiar en nada externo. De esa manera, si mi servidor SMTP remoto está inactivo, no afecta a todos los servidores.
FlappySocks
1) si deja que PHP o Python hagan la parte smtp, debe hacer todo el trabajo (colas, manejo de errores) que manejaría un MTA. 2) al final contradices lo que dices al principio
Algunas aplicaciones de Linux están configuradas para esperar mailo sendmailejecutables con nombre. Notificaciones del sistema. De eso se trata, ¿no? Para cualquier otra cosa no hay restricciones.
Craig Hicks