¿Puedo configurar el correo del sistema para usar un servidor SMTP externo?

72

¿Es posible configurar el correo del sistema en una caja de Linux para enviarlo a través de un servidor smtp diferente, tal vez incluso con autenticación? Si es así, ¿cómo hago esto?

Si eso no está claro, démosle un ejemplo. Si estoy en la línea de comando y escribo:

cat body.txt | mail -s "just a test" [email protected]

¿Es posible que se envíe a través de un servidor SMTP externo, como G-mail?

No busco "una forma de enviar correo desde gmail desde la línea de comandos", sino una opción para configurar todo el sistema para usar un servidor SMTP específico, o posiblemente una cuenta en un servidor SMTP (quizás anulando la dirección de origen) .

cwd
fuente
Es la forma en que la mayoría de las máquinas se configuraban, de hecho. ¿Tienes alguna MTA en particular en mente? Si no (esto incluye "¿qué es un MTA?"), ¿Qué distribución está ejecutando?
Gilles 'SO- deja de ser malvado'
Estoy en Ubuntu 10.04, encontré este artículo sobre la configuración de ssmtp, parece que podría funcionar. ¿Puedes dar más detalles sobre cómo se configuran la mayoría de las máquinas?
cwd

Respuestas:

71

Encontré sSMTP muy simple de usar.

En sistemas basados ​​en Debian:

apt-get install ssmtp

Luego edite el archivo de configuración en /etc/ssmtp/ssmtp.conf

Una configuración de muestra para usar su gmail para enviar correos electrónicos:

# root is the person who gets all mail for userids < 1000
[email protected]

# Here is the gmail configuration (or change it to your private smtp server)
mailhub=smtp.gmail.com:587
[email protected]
AuthPass=yourGmailPass
UseTLS=YES
UseSTARTTLS=YES

Nota : Asegúrese de que el comando "mail" esté presente en su sistema. El paquete mailutils debería proporcionar este en sistemas basados ​​en Debian.

Actualización : hay personas (e informes de errores para diferentes distribuciones de Linux) que informan que sSMTP no aceptará contraseñas con un carácter 'espacio' o '#'. Si sSMTP no funciona para usted, este puede ser el caso.

Vangelis Tasoulas
fuente
2
como una nota para los demás, puede que tenga que instalar ssmtp y luego mailutils. Creo que mailutils configura el comando de correo y los enlaces simbólicos a ssmtp para que pueda usar la mailsintaxis regular :)
cwd
1
@cwd Acabo de probar en Ubuntu 13.04. No tuve que instalar el mailutilspaquete (y no se instala automáticamente). ssmtptrabajado fuera de la caja.
Pijusn
Acabo de usar esto con éxito en Debian en un BeagleBone Black y tuve que instalar mailutils primero.
Dave Nelson
En Kubuntu 14.04, tuve que instalar mailutils después de ssmtp. Sin embargo, funcionó al primer intento.
MariusMatutiae
66
ssmtp NO verifica el certificado SSL / TLS del servidor remoto en las versiones actuales de debian, ubuntu y redhat y tampoco verifica el nombre de host del certificado. Este es un problema importante, ya que esto hace que el cifrado sea inútil y su contraseña se transmite de forma similar a texto sin formato y cualquiera puede olerla. ssmtp no ha tenido un desarrollo activo desde al menos 2009. Por lo tanto, si le preocupa la seguridad de la cuenta de correo electrónico que usa para los correos electrónicos salientes de sus servidores, NO use ssmtp, sino postfix (u otra cosa) en su lugar: unix.stackexchange.com/ a / 118101/72087
Zulakis
23

Para postfix :

  • Agregue la IP para su retransmisión de correo externo /etc/hostsy agregue un alias de retransmisión de correo.
  • Modifique la configuración de postfix:

    relayhost = [mailrelay]
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/smtp_auth
    smtp_sasl_security_options = noanonymous
    
  • Editar /etc/postfix/smtp_auth

    mailrelay login:password
    
  • Convertir a formato hash

postmap /etc/postfix/smtp_auth

No es necesario decir que solo root debería poder leer esto ... chmod u=r,og=-

Nils
fuente
10

mailx admite la configuración del servidor smtp en la CLI ...

echo "message" | mailx -S smtp=$smtphost:$smtpport -s "subject line" -v [email protected]

No es necesario instalar nada, siempre que su servidor smtp le permita enviar correo no autenticado.

No hay una respuesta única que establezca el servidor smtp para todos los bits de software que pueda tener en su caja de Linux. Cada cliente de correo electrónico puede configurar un servidor SMTP.

teknopaul
fuente
Asegúrese de poner -S var=val antes de su destinatario.
Benoit Duffez
¿Qué hacer si no se permite el correo no autenticado?
Obtuve
7

Mi favorito es el cliente de correo electrónico ( github ). Es realmente simple, no se necesita una configuración compleja, no se necesitan dependencias. Y puede especificar el argumento smtp-server a través de la línea de comandos, lo que significa que es más adecuado para las secuencias de comandos. La única pena es que la mayoría de las distribuciones de Linux no contiene esta herramienta, por lo que debe compilarla usted mismo.

Citas del proyecto de correo electrónico en github

P: ¿Qué es 'correo electrónico'?

R: 'email' es un programa que diseñé que enviará correos electrónicos a través de la línea de comandos a servidores smtp remotos o usará 'sendmail' internamente e interactuará completamente con GNUPG para encriptar y firmar sus correos electrónicos, por lo que decide hacerlo. .. Puede obtener GNUPG en: http://www.gnupg.org

Gracias cygwin por dejarme saber este útil cliente de correo electrónico .

Compilar e instalar

./configure
make
./install.sh --version 3.1.3 --prefix /usr --mandir /usr/share/man --sysconfdir /etc

Opciones de línea de comando de correo electrónico

$ email --help
Options information is as follows
email [options] recipient1,recipient2,...

    -h, -help module          Print this message or specify one of the below options
    -V, -verbose              Display mailing progress.
    -f, -from-addr            Senders mail address
    -n, -from-name            Senders name
    -b, -blank-mail           Allows you to send a blank email
    -e, -encrypt              Encrypt the e-mail for first recipient before sending
    -s, -subject subject      Subject of message
    -r, -smtp-server server   Specify a temporary SMTP server for sending
    -p, -smtp-port port       Specify the SMTP port to connect to
    -a, -attach file          Attach file and base64 encode
    -c, -conf-file file       Path to non-default configuration file
    -t, -check-config         Simply parse the email.conf file for errors
    -x, -timeout              Set socket timeout.
        -cc email,email,...   Copy recipients
        -bcc email,email,...  Blind Copy recipients
        -sign                 Sign the email with GPG
        -html                 Send message in HTML format ( Make your own HTML! )
        -tls                  Use TLS/SSL
    -m, -smtp-auth type       Set the SMTP AUTH type (plain or login)
    -u, -smtp-user username   Specify your username for SMTP AUTH
    -i, -smtp-pass password   Specify your password for SMTP AUTH
    -g, -gpg-pass             Specify your password for GPG
    -H, -header string        Add header (can be used multiple times)
        -high-priority        Send the email with high priority
        -no-encoding          Don't use UTF-8 encoding

Uso de la muestra

Correo simple con servidor SMTP especificado

echo "mail body" | email -subject "unix.stackexchange.com Q36982" -from-name LiuYan刘研 -from-addr [email protected] -smtp-server smtp.domain.com -smtp-port 25 [email protected] [email protected]

Correo HTML

echo "<h1>header</h1><p>paragraph</p>" | email -html -subject "unix.stackexchange.com Q36982 HTML mail" [email protected]

Archivos adjuntos)

echo "see the attachment(s)" | email -subject "This is my email.conf file" -attach /etc/email/email.conf -attach [email protected]
LiuYan 刘 研
fuente
2

Configure un servidor SMTP exim local siguiendo las instrucciones de esta página, pero elija la opción "correo enviado por smarthost; no hay correo local" en la primera pantalla de la configuración de Exim. Esto configurará un servidor SMTP en su casilla que puede recibir correo de los comandos "mail" o "mailx" y reenviará todos los mensajes al smarthost (un servidor de Gmail en su caso) para su entrega.

Para enviar correos electrónicos salientes a través de un servidor de Gmail, deberá configurar el soporte TLS para Exim , que no es trivial. Este Howto da alguna explicación y aquí hay un enlace con más explicaciones específicas para Gmail. Debería permitirse varias horas para que esto funcione. Sugeriría comenzar enviando un correo electrónico desde su casilla a un servidor SMTP habilitado para TLS al que tenga acceso raíz para que pueda depurar su configuración Exim TLS desde ambos lados antes de intentar enviar a través de un servidor Gmail. Como la comunicación está encriptada, no podrá usar herramientas como tcpdump para analizar el protocolo en la línea.

Eli Rosencruft
fuente
1

Si tiene conectividad de servidor smtp externo con su host, puede configurar smtp en su host y enviar correos electrónicos.

La configuración de SMTP en los pasos de Linux se puede encontrar aquí: http://kerneltalks.com/config/guide-smtp-configuration-linux/

Puede encontrar ejemplos de comandos por correo electrónico aquí: http://kerneltalks.com/commands/examples-send-email-through-terminal/

Shrikant
fuente
Las respuestas deben incluir suficientes detalles para sostenerse por sí mismas. Tener enlaces con información más completa está muy bien, pero al menos una porción del material enlazado debe ser citado en la respuesta por lo que puede ser útil después de conjuntos de enlace roto.
user4556274