Para poder enviar correos desde la terminal necesitamos contar con algunas utilidades en nuestra computadora.
La primera de ellas es postfix, un servidor de correo que se encargará de las tareas de comunicación con los servidores de destino.
En esta lectura asumiré que estás trabajando con alguna versión de Ubuntu, si no es así, los comandos podrían variar ligeramente.
Abre una terminal y asegúrate de tener tu sistema de paquetes al día usando el comando sudo apt update.
A continuación instala postfix utilizando el comando: sudo DEBIAN_PRIORITY=low apt install postfix.
Te encontrarás con una pantalla como esta:
Selecciona “Sitio de Internet” y dale “Aceptar”.
Te encontrarás con una pantalla como esta:
Dale aceptar y pasarás a una pantalla como esta:
Ingresa aquí tu dirección de correo electrónico.
Dale aceptar y verás lo siguiente:
Dale aceptar y continúa:
Responde “No” y avanza a:
Dale aceptar. Sigue con:
Acepta y continúa:
Aceptar.
Selecciona “Todos” y da “Aceptar”.
Con eso finalizará el asistente para la configuración de postfix y la instalación habrá finalizado.
Instala las utilidades de correo con el comando:
sudo apt install mailutils
Y ahora sí, tienes todo lo que necesitas para enviar correos desde la terminal.
Puedes probarlo usando el comando:
echo "Hola Mundo!" | mail -s "Testing" TU_EMAIL
Revisa tu correo (no olvides revisar la bandeja de no deseados!) y ya podrás enviarle un saludo a todos tus conocidos sin pasar por Gmail, Outlook ni nada parecido. :)
Sería conveniente que indique que el software para enviar y recibir correos es un gestor de protocolo SMTP (simple mail transfer protocol) el cual vuelve el computador en una oficina de envío y recepción de correo.
Estaría bien mencionar que hay varias opciones como son y que para este tutorial se decidió usar postfix
sendmail
postfix
exim4
También sería bueno destacar que debido a que desde cualquier equipo conectado a internet se podía enviar MAIL y esto fue abusado por los SPAMMERS los servicios públicos de correo como hotmail, outlook, yahoo mail, gmail, etc han restringido la recepción de correo y puesto políticas de validación que implican cosas que el equipo desde el que enviamos este en internet, tenga un nombre de dominio, el dominio cuenta con registros en el servidor DNS para ciertas validaciones y que el usuario desde el que se envía pueda recibir correo entre otras, es un proceso bastante complicado para que nuestros correos puedan ser recibidos en los servidores de estos sistemas de correo públicos.
apenas vi esta forma de enviar, lo primero que pense fue en el phishing y en el spam.
Si no lep este aporte no me doy por enterado. Revisé cada bandeja de mi correo y lo envié do veces para verificar que había escrito bien el comando.
Gracias por iluminarnos.
Puntos importantes a tener en cuenta.
Si les da error el comando echo "Hola Mundo!" | mail -s "Testing" TU_EMAIL. Significa que ocupan mailutils. Lo instalan asi:
sudo apt-get update
sudo apt install mailutils
Si los correos no les esta llegando puede que el servicio de postfix no este corriendo. Para iniciarlo ejecuten:
sudo service postfix start
Muchas Gracias por el aporte con lo segundo pudo llegar a mi correo
lo hice pero sirgue sin llegar el correo, creo q hice mal la configuracion
para editar la configuración inicial pueden utilizar este comando sudo
sudo dpkg-reconfigure postfix
Gracias!
Buenísimo, lo único que falto es que hay que iniciar el servicio: Sudo service postfix start
Me ha sorprendido lo simple que es.
aplique eso, pero sigue sin llegar el correo a la dirección donde lo estoy enviando
SOLUCIÓN. Después de haber instalado y configurado el servicio postfix, cuando ejecuten el siguiente comando en la terminal:
sudo apt install mailutils
Deben reiniciar el servicio mediante el comando:
sudo service postfix restart
Por último, ya podrán ejecutar el comando:
echo “Hola Mundo!” | mail -s “Testing” TU_EMAIL
EXTRA BONUS:
Mediante el comando service postfix status podrán averiguar si tienen el servicio configurado correctamente o si les falla algo más.
Hola Reda cómo estás?
me puedes por favor ayudar, terminé la instalación y me sale esto al verificar el estado porque no se envían los mail
sed: can't read /var/spool/postfix/pid/master.pid: Permission denied
Hola Ginna! Parece ser que es un error de permisos, prueba con el siguiente comando:
postfix set-permissions
Es probable que tengas que reiniciar la máquina y/o reiniciar el servicio. Con que distribución trabajas?
Me funciono perfecto con algunos agregados al post, corro ubuntu 20.04 lts desde windows 10,
Lo unico que tuve que agregar luego de configurar postfix fue hacer un:
sudo postfix status para ver el estado del servicio ya que habia mandado mails y no habian llegado, ahi identifique que el proceso no estaba corriendo.
Luego ejecute un:
sudo service postfix start
Volvi a mandar el mail y funciono bien. (otra cosa el subject en esta version de linux va sin las comillas, sino no funciona).
El correo a Gmail llega a spam como era de suponer.
Me funcionó perfecto. Sólo que no fue al gmail sino al yahoo en spam.
Man no entiendo. Esto es para usar mi correo ya existente de Gmail? o para usar algo alterno?
Lo he probado uso la misma version pero no llegan los mensajes.
Probe con ambas cosas, con un correo inventado (desde el comienzo pense que no funcionaria) y luego con un correo ya existente, de todos modos no funciona, aunque no arroja ningun error, tampoco llegan los mensajes
La prueba funciono de forma correcta, despues de ingresar el comando sudo apt install mailutils se debe ingresar el comando sudo service postfix start sirve para iniciar el servico de correo postfix, luego recien se puede hacer la prueba de envio de correo, todos los correos se envian al spam.
gracias amigo
Para re configurar postfix
sudo dpkg-reconfigure postfix
Muchas Gracias amigo!! me sirvió demasiado esto!
s.
Hola amigos, si quieren validar si su correo salio de su bandeja hacia el destino, entonces pueden probarlo de la siguiente manera. Esto con el fin de confirmar que no es que su servidor de correos es quien no esta enviando los mensajes, sino que el servidor correo destino tiene sus políticas para aceptar correos de servidores alternos.
matvin@server:~$ echo "Envio de mensaje"| mail -s "Muestra de errores" miemail@gmail.commatvin@server:~$ mail
No mail for matvin
matvin@server:~$ mail
"/var/mail/matvin":1 message 1new>N1MailDeliverySystThuJan1410:5782/3385UndeliveredMailReturned to Sender?
Aqui escriben 1 y le dan enter, eso va a llevarlos al mail que retorno gmail o el correo al que intentaron enviar mensaje:
Con esto podes darte una idea del porque tu correo no llego a gmail.
Que por otro lado, te demuestra que el mensaje si salió de tu servidor hacia el de google o hotmail etc..
Yo hice la prueba enviando correo al yahoo y alli si me permitión ver el correo en la bandeja de spam.
Ahora bien, no soy experto en estos temas, pero creo que va también de la mano con un tema de seguridad o certificados en nuestros servidores de correos. Si alguién tiene información al respecto, sería genial que lo comparta.
Gracias por tu aporte, me queda muy claro porque no funciona.
Si al parecer se debe a que el mail sale sin seguridad, hay que encriptar el mail, pero para eso se requiere algo letscrypt.
Ok muchachos les comentare lo que hice de pronto a ustedes les sirva.
realice el proceso tal cual como esta arriba en el post de platzi, pero no me funco.
¿Entonces que hiciste?
– se preguntaran
–bien es del la siguiente manera van hacer los siguiente.
–Comandos.
– apt-get update
– apt-get upgrade
bien vamos comenzando hasta ahora, de aqui en adelante lo haremos como usuarios root bien.
para entrar como root escriben lo siguiente:
sudo -i
deberia aparecerles la ruta de su usuario pero con root al principio.
Aqui es donde se coloca bonita la cosa.
entraras el siguiente comando.
sudo nano /etc/postfix/main.cf
cuando estes adentro buscaras el siguiente archivo relayhost = y le daras el suguiente parametro.
relayhost =[smtp.gmail.com]:587
una vez hecho esto si salirnos del archivo en la parte enferior colocaremos lo siguiente.
<h1>EnablesSASL authentication for postfix</h1>smtp_sasl_auth_enable = yes
<h1>Disallow methods that allow anonymous authentication</h1>smtp_sasl_security_options = noanonymous
<h1>Locationof sasl_passwd we saved</h1>smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
<h1>EnableSTARTTLS encryption forSMTP</h1>smtp_tls_security_level = encrypt
<h1>LocationofCA certificates forTLS</h1>smtp_tls_CAfile =/etc/ssl/certs/ca-certificates.crt
Ok vamos bien ahora busca en el mismo archivo la siguiente linea mydestination = localhost
en mi caso solo deje los ultimos dos parametros de la linea si hay otro antes de los ultimos dos lo borran
se preguntaran porque verdad.
¿porque para que?
– la verdad ni yo lo se pero me funco apunta de tutos.
mydestination = localhost.localdomain, localhost
le dan Esc :x para salvar
ahora van a seguir las siguientes lineas de comandos
sudo nano /etc/postfix/sasl/sasl_passwd
como es un archivo vacio pues lo llenamos con lo siguiente
[smtp.gmail.com]:587 pepito@gmail.com:coloque_la_de_mi_mail
como colocamos un email de google pues toca darle permisos de terceros.
y por ultimo para que se relajen pues a probar no!
echo"test01"| mail -s"Postfix gmail"+ email al que vas a enviar
Realmente espero les sirva cometi muchos errores buscando solución la documentación se encuentra en ingles así que mucha paciencia, pero hay tienen, enlaces adiccionales.
Ah si me sirvio para gmail y yahoo.
Como que no aparece el ultimo comando :C
Hola, nos puede dejar el link del tutorial original por favor
Hola, antes de enviar el email, ejecuten esto:
sudo service postfix start
Con este tutorial y ese comando extra logre que el mail me llegara a spam. :)
Literalmente! Yo al ver que a muchos compañeros no les funcionaba fui directo a la solución de la página que recomendó Liliana, seguí todo al pie de la letra y aún así tampoco me funcionó, decidí probar con el tutorial de la clase directamente a ver si tal vez a mi sí me funcionaba y tampoco fue así; viendo un vídeo en Youtube probé a reiniciar el servicio con uno de los comandos que ahí mostraban:
$ sudo /etc/init.d/postfix restart
Luego de lo cual intenté de nuevo el comando echo junto al comando mail y voilá!!! Funcionó de una!!
Notas:
Debo advertir que en mi caso puntual me apareció una ventana del sistema solicitándome permisos para el Firewall, yo probé a configurarlo con la red de mi casa y listo, no sé si ésto último será necesario, pero lo comento por si a alguien más le ocurre.
La configuración de la página que recomendó Liliana Inés no fue necesaria, dado que antes de empezar el tutorial de la clase desinstalé por consola el Postfix con el comando remove:
Lo intenté en Mac. No pude instalar postfix pero me di cuenta que ya estaba instalado (MacOS 10.15.5). Así que solo ejecuté el comando echo | mail y funcionó.
Si estás en Mac, puedes verificar si lo tienes instalado con el comando postconf mail_version. Deberia indicarte la versión.
Y si una vez ejecutado no te llega el correo que enviaste, revisa el SPAM.
intenté hacer lo mismo, pero al parecer debo configurar primero mi cuenta de correo que usaré en unos archivos (según un artículo que estoy viendo) crees que sea seguro dejar mi password y mi dirección de correo en un archivo de mi computadora?
Hola Willy. En el link veo como configurar tu correo gmail como el correo de salida. La verdad, no hay problema en que pongas tus datos, ya que quedan en local, el riesgo está en que te roben el equipo y el que lo robe sepa suficiente como para entrar a archivos de configuración y obtener los datos... pero si sabes suficiente de estas cosas, no te dedicas a robar computadores.
Pero pruébalo sin configurar. Yo ejecuté el comando y se envió un correo desde una dirección con el nombre del equipo. Algo como pato@imac-de-pato.local
Algo que puede ayudar a encontrar los problemas particulares de cada uno es ver el contenido del archivo /var/log/mail.log (Esa ruta es la que se usa por defecto en Ubuntu, los que usen otras distribuciones lo encontrarán en otro lado).
Recién probando en una máquina virtual mía encontré esto:
Feb 26 20:08:30 vagrant-ubuntu-trusty-64 postfix/smtp[3682]: 9FAEF4038A: to=<mchojrin@gmail.com>, relay=gmail-smtp-in.l.google.com[64.233.186.27]:25, delay=2, delays=0/0/0.94/1, dsn=5.7.1, status=bounced (host gmail-smtp-in.l.google.com[64.233.186.27] said: 550-5.7.1 [181.167.10.221] The IP you're using to send mail is not authorized to 550-5.7.1 send email directly to our servers. Please use the SMTP relay at your 550-5.7.1 service provider instead. Learn more at 550 5.7.1 https://support.google.com/mail/?p=NotAuthorizedError z59si256929qtc.138 - gsmtp (in reply to end of DATA command))
Eso explica por qué los mails no están llegando a gmail (que parece un poco quisquilloso :p)
hay forma de corregir este error? hay que hacer algun cambio de configuración?
profe no entiendo var/log/mail.log que es si escribo eso en la consola dice : -bash: var/log/mail.log: No such file or directory