¿Cómo puedo hacer que crontab me envíe un correo electrónico con la salida de sus trabajos? Tengo por [email protected]
encima de los trabajos, pero no funciona.
Sé que necesito usar algo como Postfix o Sendmail, pero por mi vida no puedo descubrir cómo lograr esto. He buscado y buscado una guía simple sobre la configuración de Postfix, pero todos son increíblemente complicados y esperan que esté configurando un servidor completo para enviar y recibir correo electrónico y conocer todos los términos (como qué es un nombre de dominio para correos electrónicos salientes?).
Todo lo que quiero hacer es que crontab me envíe un correo electrónico. ¿¿Porque esto es tan difícil??
Información adicional:
Mi archivo crontab se ve así:
[email protected]
1 0 * * * ~/Desktop/toskymesh.sh
59 6 * * * ~/Desktop/tooptus.sh
0 3 * * * snapraid sync
Más información adicional:
La salida de ps -ef | grep '[s]endmail'
root 6840 1370 0 10:26 ? 00:00:00 sendmail: MTA: accepting connections
Sé con certeza que cron funciona, pero de echo Test | mail -s Test [email protected]
todos modos estoy probando el comando de correo .
sendmail setup
. ¡Buena suerte!mail
. En uno de ellos, dice esto:Diagnostic-Code: SMTP; 553 5.7.1 [BL21] Connections will not be accepted from [MyIPRedacted], because the ip is in Spamhaus's list; see http://postmaster.yahoo.com/550-bl23.html
¿Esto significa que el comando está funcionando pero Yahoo está bloqueando el correo?http://webmasters.stackexchange.com
? Probablemente puedan ayudarlo mejor o mejor aúnchat.stackexchange.com/rooms/524/webmasters
cuando aparentemente todas las preguntas son bienvenidas (hm ... es posible que necesite más representantes para ingresar, ¿está en algún otro sitio de intercambio de pila?) Buena suerte.Respuestas:
Al final lo usé
sSMTP
. Es mucho, mucho más simple que seaPostfix
osendmail
y hace el trabajo muy bien.Para referencia futura, aquí le mostramos cómo usar sSMTP con Yahoo Mail (no se preocupe, es mucho menos complejo de lo que parece):
Use Synaptic para descargar ssmtp. Alternativamente, podrías correr
sudo apt-get install ssmtp
.Abra el archivo de configuración en /etc/ssmtp/ssmtp.conf.
Haga que la configuración se vea así:
Cree el archivo cert.pem con OpenSSL. He utilizado el comando
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 9999 -nodes
(más información aquí ). Puedes pegar el archivo en cualquier lugar, pero acabo de tirarlo en ~ /. Donde sea que lo coloque, asegúrese de apuntar laTLS_CA_File=
línea en ssmtp.conf a la ubicación correcta.Abra el archivo
/etc/ssmtp/revaliases
y agregue la línea[yourPCUsername]:[[email protected]]:smtp.mail.yahoo.com:587
. Si se está ejecutando como root, creo que debe agregar otra línea que reemplace su nombre con 'root'.Eso es todo, estás listo para ir! Para probar, la forma más fácil (IMO) es crear un archivo con lo siguiente:
sendmail -V
: debe decir 'sSMTP'.cat fileWithEmailInIt.txt | sendmail -i -t
, luego espera unos segundos (10-30) y revisa tu correo electrónico.Obviamente, reemplace
[[email protected]]
con su correo electrónico (sin los corchetes) y[yourRealYahooPassword]
con su contraseña de Yahoo Mail (nuevamente, sin los corchetes).Nota adicional: si tiene problemas con Gmail, pruebe la opción 1 de esta respuesta (gracias a Ben Creasy por esa información).
fuente
hostname
como se muestra actualmente). Esta respuesta sugiere que puede usar certificados de servidor predeterminados, pero descubrí que no necesitaba unaTLS_CA_File=
línea para enviar a través de GMail.Instalar Postfix. Es más complicado que la mayoría de los otros paquetes, pero aún no es complicado .
Seleccione "Sitio de Internet" y luego acepte todos los valores predeterminados. Entonces solo necesitamos detener las conexiones externas, convirtiendo esto en un " cliente nulo ". Ejecutar:
sudoedit /etc/postfix/main.cf
y encuentre lainet_interfaces
configuración (cerca del final) y cámbiela aloopback-only
, así:Y finalmente reinicie Postfix con
sudo /etc/init.d/postfix restart
(la recarga no funcionará).Ahora tiene una instalación Postfix que no retransmitirá el correo electrónico para máquinas externas, solo aceptará conexiones en 127.0.0.1 (y :: 1 para IPv6).
En una nota separada, sus líneas cron probablemente no funcionen porque está usando rutas no relativas y rutas con sustituciones de Bash en.
sh
No entiende~
y puede que no tenga unPATH
conjunto adecuado . Así que reemplácelos con (solo estoy adivinando los caminos reales):Y si sus scripts requieren ejecutarse desde un directorio específico, asegúrese de que estén
cd
en el directorio correcto. No asuma quecron
estará en el lugar correcto, ya que probablemente no lo hará.fuente
~/Desktop/
.inet_interfaces = localhost
. loopback-only me diopostfix: fatal: config variable inet_interfaces: host not found: loopback-only
Tuve mucha suerte con exim4.
(Alpine es solo el cliente de correo que me gusta usar)
Después de eso, corrí
y seguí las indicaciones. Esta página: https://help.ubuntu.com/community/Exim4 también fue muy útil. Me llevó unos 10 minutos ponerlo en funcionamiento.
fuente
De la página de manual de sSMTP: "No hace aliasing, que debe hacerse en el agente de usuario o en el mailhub. Tampoco respeta .forwards, que deben hacerse en el host receptor. Especialmente no se entrega a las tuberías. "
Por lo tanto, si desea recibir todos los mensajes enviados a la raíz en su correo electrónico externo, es una mala idea usar sSMTP, ya que no admite alias.
En su lugar, podría usar postfix. Aún es muy simple. Aquí le mostramos cómo usarlo con gmail como su smtp para enviar mensajes:
Tipo general de configuración de correo: sistema satelital
Nombre del correo del sistema: el nombre completo calificado del servidor de correo, por ejemplo, mail.example.com
Host de retransmisión SMTP (en blanco para ninguno): [smtp.gmail.com]: 587
Añadir a /etc/postfix/main.cf:
Crear / etc / postfix / sasl / sasl_passwd
Entonces:
Edite / etc / alias y agregue:
Por último, ejecuta:
Ahora, puede probar si la redirección funciona:
Espero eso ayude.
fuente