Hacer que su servidor le envíe correos electrónicos es una forma sencilla de recibir notificaciones de scripts bash, aplicaciones y trabajos cron. El correo electrónico de línea de comandos funciona de manera similar al correo electrónico personal y es fácil de configurar y usar.
¿Cómo funciona el correo electrónico de línea de comandos?
Cuando el correo electrónico viaja por los tubos de Internet, generalmente se envía a través del Protocolo simple de transferencia de correo, o SMTP. El servidor que maneja el envío de correo se llama servidor SMTP y muchos proveedores de correo electrónico gratuitos (Gmail, Yahoo, etc.) proporcionan servidores SMTP de forma gratuita. Esto es excelente para este caso de uso, ya que solo necesitará configurar la aplicación de línea de comando que realiza el envío.
Esta aplicación se llama Agente de transferencia de correo (MTA) y se encarga de comunicarse con el servidor SMTP. Deberá autenticar el MTA con el servidor SMTP, que generalmente es tan simple como darle su contraseña o clave. Luego, el MTA podrá actuar como usted y enviar correos electrónicos desde su cuenta.
Si planea enviar correos electrónicos a los usuarios finales, deberá configurar más información con su proveedor de SMTP. Por lo general, esto significa verificar su dominio con autenticación DKIM y SPF, lo que demuestra que usted es el propietario del dominio y no está falsificando su dirección. Puede hacer esto con Gmail, pero si está enviando muchos correos electrónicos, debería utilizar una solución empresarial como Amazon SES.
Cómo instalar y configurar Postfix
La solución más sencilla para el correo electrónico de línea de comandos es utilizar Postfix como un MTA, utilizando un servidor SMTP gratuito como Gmail. Gmail tiene una tasa limitada de 100 correos electrónicos por día, lo que probablemente sea suficiente para notificaciones de correo electrónico simples. Si necesita más que eso, puede usar Amazon SES o SendGrid, que deberían ser reemplazos directos del servidor SMTP de Gmail en este ejemplo.
Postfix también puede ejecutarse su propio servidor SMTP, pero es más difícil de configurar y menos compatible con destinatarios externos a menos que configure la verificación del dominio.
Instale Postfix y libsasl2-modules
, un paquete para administrar la autenticación SMTP, desde el administrador de paquetes de su distribución. Para sistemas basados en Debian como Ubuntu, eso sería:
sudo apt-get install postfix libsasl2-modules
A medida que se instala Postfix, le solicitará la configuración. En la primera pantalla, seleccione «Sitio de Internet», que configurará Postfix para usar SMTP.
El siguiente mensaje le pedirá su nombre de dominio. No necesita un nombre de dominio para usar Postfix, pero necesitará uno para que sus correos electrónicos se envíen desde ese nombre de dominio. En este ejemplo, sin especificar el nombre de dominio, sus correos electrónicos provendrán de la cuenta de Gmail que ha configurado para Postfix.
A continuación, deberá autenticar Postfix. usted pueden use la contraseña de Gmail de su cuenta, lo cual está bien si crea una nueva cuenta solo para Postfix, pero si está usando su cuenta personal, querrá crear una contraseña de la aplicación. De esta forma, la contraseña se puede revocar en cualquier momento. Tenga en cuenta que necesitará la autenticación de dos factores activada para usar contraseñas de aplicaciones.
Postfix almacena los detalles de autenticación en /etc/postfix/sasl/sasl_passwd
. Es posible que este archivo no esté allí de forma predeterminada, por lo que es posible que deba crearlo con touch
. Ábrelo y pega tu información en:
[smtp.gmail.com]:587 [email protected]:password
Esto configura Postfix para utilizar el servidor SMTP de Google y autenticarse con sus datos.
A continuación, corre postmap
sobre sasl_passwd
:
sudo postmap /etc/postfix/sasl_passwd
Esto generará un sasl_passwd.db
archivo utilizado por Postfix. Ambos archivos almacenan la contraseña de su aplicación en texto sin formato, por lo que querrá restringirlos a la raíz ejecutando chown
y chmod
:
sudo chown root:root /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db sudo chmod 600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
Postfix ahora debería estar listo para funcionar, pero deberá configurar el archivo de configuración principal de Postfix para usar la retransmisión SMTP y sus credenciales SASL. Abrir /etc/postfix/main.cf
en su editor de texto favorito y busque la opción «relayhost». Cambie esto para usar el servidor SMTP de Gmail:
relayhost = [smtp.gmail.com]:587
Luego, al final del archivo, agregue las siguientes líneas para configurar SASL y use su archivo de contraseña.
# enable SASL authentication smtp_sasl_auth_enable = yes # disallow methods that allow anonymous authentication. smtp_sasl_security_options = noanonymous # where to find sasl_passwd smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd # Enable STARTTLS encryption smtp_use_tls = yes # where to find CA certificates smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
Guarde este archivo, luego reinicie Postfix con systemctl
:
sudo systemctl restart postfix
Postfix ahora debería estar completamente configurado y establecido como el controlador de correo predeterminado en su sistema. Puedes probarlo usando el propio Postfix sendmail
mando:
sendmail [email protected] FROM: [email protected] SUBJECT: Hello from your server! This is a test email sent from your server by Postfix. .
Revise su bandeja de entrada (o bandeja de salida) y debería ver un nuevo correo electrónico. Tu puedes correr sudo tail -f /var/log/mail.log
(o mail.err
) para comprobar los registros de correo.
Postfix se configurará a sí mismo como el controlador de correo predeterminado de su servidor. Cualquier aplicación o programa que necesite enviar correos electrónicos ahora debería usar Postfix de forma predeterminada, como PHP (que usa Postfix sendmail
). Algunos pueden necesitar una configuración adicional, que generalmente solo le dice a la aplicación que use Postfix.
Si no quieres usar sendmail
(ya que es un poco torpe) puede instalar otro cliente de correo. Un buen cliente es mutt
, que admite el envío de archivos como archivos adjuntos y utilizará Postfix de forma predeterminada. La sintaxis para el envío simple es:
echo "email content" | mutt -s "email subject" [email protected]
Y para adjuntar archivos, deberá separar los -a
marcar los valores del destinatario con un guión doble «--
“:
echo "email content" | mutt -s "email subject" -a /path/to/file -- [email protected]
Lo cual aparecerá en su bandeja de entrada con el archivo adjunto, asumiendo que no alcanza ningún límite de tamaño de archivo impuesto por el servidor SMTP:
Cualquiera que sea el cliente de correo que elija, cualquiera de ellos debe ser utilizable desde scripts de shell, trabajos cron y en cualquier otro lugar que pueda configurar para ejecutar comandos Unix.