email https://www.carloscarrascal.com/ es Servidor de correo con Mailgun https://www.carloscarrascal.com/blog/servidor-de-correo-con-mailgun <article data-history-node-id="19" class="node node--type-blog-post node--view-mode-rss group-one-column ds-2col-stacked-fluid clearfix"> <div class="group-header"> <div class="field field--name-node-title field--type-ds field--label-hidden field--item"><h1> Servidor de correo con Mailgun </h1> </div> <div class="field field--name-node-post-date field--type-ds field--label-hidden field--item">Sábado, Febrero 25, 2017 - 18:11</div> </div> <div class="group-left"> <div class="field field--name-field-tags field--type-entity-reference field--label-hidden field--items"> <div class="field--item"><a href="/tags/mailgun" hreflang="es">Mailgun</a></div> <div class="field--item"><a href="/tags/servicios" hreflang="es">Servicios</a></div> <div class="field--item"><a href="/tags/email" hreflang="es">email</a></div> </div> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><p><img alt="Mailgun logo" class="pull-left" data-entity-type="file" data-entity-uuid="eb57dbb1-ca84-4aef-b7a4-2fd824520ee0" src="/sites/default/files/inline-images/Mailgun_Primary_0.jpg" style="height: 95px; width: 300px;" />Yo creo que el servidor de correo ha sido el coñazo mas grande que yo he tenido que configurar nunca. Para ser justos, hace ya mas de 10 años desde que desmonte el dominio donde lo tenia con Postfix y desde entonces vengo usando Gmail, y por aquel entonces no tenia tanta experiencia con servidores y Linux, pero lo recuerdo como una locura constante: emails no entregados, spam por un tubo, relays chungos, blacklists, whitelists, suputamadrelists... vamos un horror.</p> <p>Por <a href="https://blog.codinghorror.com/so-youd-like-to-send-some-email-through-code/">aquí</a> y <a href="https://www.digitalocean.com/community/tutorials/why-you-may-not-want-to-run-your-own-mail-server">aquí</a> hay un par de artículos (en ingles) bastante interesantes al respecto.</p> <p>Pues ahora quería volver a configurar un servicio de correo electrónico para varios dominios, pero no tenia ninguna gana de instalar un MTA propio, así que busque algunas alternativas. Las premisas eran sencillas:</p> <ul> <li>Que pueda configurar en mi dominio y enviar y recibir correo como <a href="mailto:pepito@midominio.com">pepito@midominio.com</a>.</li> <li>Que pueda gestionar varias cuentas de correo.</li> <li>Que me permita recibir y enviar correos desde mi cuenta de Gmail, que es la que uso habitualmente.</li> <li>Que sea gratuito o de muy bajo coste.</li> <li>No voy a hacer un uso extensivo de el, pero quiero poder tener direcciones de email propias.</li> </ul> <p>Con esta idea en mente encontré <a href="https://www.mailgun.com/" target="_blank">Mailgun</a>. Ellos se definen como un servicio de correo electrónico para desarrolladores, y solo eso ya suena bastante bien, ¿no?</p> <p>Es un servicio bastante completo que provee de una API Rest para poder realizar operaciones en la recepción y envío, y básicamente nos va a gestionar hasta 10.000 mensajes al mes por la cara.</p> <p>Tienen cosas bastante interesantes, como un SDK para PHP en Github donde tenéis algunos ejemplos sobre como usar su API para gestionar el correo:</p> <p><a href="https://github.com/mailgun/mailgun-php">https://github.com/mailgun/mailgun-php</a></p> <h2>Que nos ofrece</h2> <p>Con Mailgun vamos a poder:</p> <ul> <li>Enviar correo desde nuestro dominio con un servidor SMTP externo.</li> <li>Redireccionar el correo entrante hacia otras cuentas de correo, por ejemplo, Gmail: <em><a href="mailto:admin@midominio.com">admin@midominio.com</a></em> -&gt; <em><a href="mailto:cuentadecorreodetodalavida@gmail.com">cuentadecorreodetodalavida@gmail.com</a></em></li> <li>Logs e informes</li> <li>Gestionar hasta 10.000 correos al mes de forma gratuita</li> </ul> <p>Solo hay un pero: con la cuenta gratuita solo podemos enviar/recibir correo de/a otras cuentas que han de ser validadas previamente. Tenemos que pasarnos a una cuenta de pago y dar nuestros datos bancarios, pero hasta 10.000 correos al mes, el servicio es gratuito, no nos cobrarán ni un duro. Recomiendo registrarse con una cuenta básica, configurarlo y probarlo con algunas direcciones controladas, y si os convence, actualizar a una cuenta de pago. Vamos, lo que hice yo.</p> <h2>La primera en la frente</h2> <p>Una vez registrados en Mailgun, tendremos que configurar nuestro dominio. Desde su panel de control, vamos a <em>Domains &gt; Add new domain</em> para hacerlo. Nos pedirá el nombre de nuestro dominio, y la primera recomendación es que utilicemos un subdominio para el correo del tipo mail.midominio.com y que mas tarde lo podremos configurar al gusto. Bueno, pues eso no es del todo cierto, y es una putada, porque me pasé un buen rato intentando configurarlo y no hubo forma. Si utilizamos mail.midominio.com, nuestras direcciones de correo van a ser siempre algo como <em><a href="mailto:pepito@mail.midominio.com">pepito@mail.midominio.com</a></em>, en lugar de <em><a href="mailto:pepito@midominio.com">pepito@midominio.com</a></em>, que es lo que la mayoría de personas (las normales, al menos) tiende a querer configurar.</p> <p>Así que nada de <em>mail.loquesea</em>, y al turrón. Yo lo he configurado en el dominio raíz y hasta ahora no he tenido ningún conflicto con ninguna otra cosa, claro esta, no tengo ningún otro servidor de correo en ese dominio.</p> <p>Si alguien lee esto y ha conseguido configurarlo correctamente con <em>mail.midominio.com</em>, que deje un comentario o algo, y le pago una cerveza.</p> <h2>Configuración de DNS</h2> <p>Para configurar el dominio, tendremos que hacer algunos cambios en nuestros DNS para poder enviar correos, configurando una serie de registros que servirán básicamente para validar que el dominio es efectivamente nuestro. Para hacer esto dependeremos de nuestro proveedor de DNS y será diferente en cada caso, así que no voy a meterme ahí. Mailgun tiene un servicio que permite comprobar al momento si nuestros cambios de DNS son correctos o no.</p> <p>Una configuración típica de DNS podría ser algo así, usando midominio.com como ejemplo:</p> <table border="0" cellpadding="10" cellspacing="10"> <tbody> <tr> <td>midominio.com</td> <td>A</td> <td>xxx.xxx.xxx.xxx</td> <td>Registro A básico del dominio</td> </tr> <tr> <td>midominio.com  </td> <td>MX 10</td> <td>mxa.mailgun.org</td> <td>Registro de correo MX principal</td> </tr> <tr> <td>midominio.com</td> <td>MX 10</td> <td>mxb.mailgun.org</td> <td>Registro de correo MX secundario</td> </tr> <tr> <td>pic._domainkey.midominio.com</td> <td>TXT</td> <td>k=rsa; p=XXXX</td> <td>Registro TXT con info de Mailgun</td> </tr> <tr> <td>midominio.com</td> <td>TXT</td> <td>v=spf1 include:mailgun.org ~all</td> <td>Registro TXT con info de Mailgun</td> </tr> <tr> <td>email.midominio.com</td> <td>CNAME</td> <td>mailgun.org</td> <td>Registro para rastreo de los correos</td> </tr> </tbody> </table> <p>Hay que tener en cuenta que los cambios de DNS tardan en propagarse, y dependiendo de los cambios que hagamos Mailgun puede tardar hasta 24 horas en comprobar el dominio.</p> <h2>Enviar correo: SMTP</h2> <p>En cuanto tengamos los DNS configurados y validados por Mailgun, ya podremos comenzar a enviar correos, pero ojo, tan solo a direcciones previamente autorizadas si tenemos la cuenta básica. Accediendo a la información de nuestro dominio en <em>Domains</em>, debajo de <em>Domain information</em> podremos ver la configuración del servidor SMTP, que siempre será el mismo: <em>smtp.mailgun.org</em>. Hay un enlace en <em>Manage STMP credentials</em>. desde donde podremos dar de alta buzones nuevos y gestionar las contraseñas. Por defecto, tendremos configurado un buzón <em><a href="mailto:postmaster@midominio.com">postmaster@midominio.com</a></em>, y una contraseña por defecto.</p> <p>Ahora lo que podemos hacer para comenzar a enviar correo es añadir la cuenta en cualquier otro servicio de correo (ejem, Gmail):</p> <table border="0" cellpadding="10" cellspacing="10" style="width:500px"> <tbody> <tr> <td>Usuario</td> <td><a href="mailto:postmaster@midominio.com">postmaster@midominio.com</a></td> </tr> <tr> <td>Contraseña</td> <td>La que hayamos configurado</td> </tr> <tr> <td>Servidor SMTP</td> <td>smtp.mailgun.org</td> </tr> <tr> <td>Puerto</td> <td>587</td> </tr> <tr> <td>Otros</td> <td>Activar opción de TLS</td> </tr> </tbody> </table> <h2>Recibir correos: Mailgun Routes</h2> <p>Para recibir correos solamente tendremos que definir una serie de rutas, ya que Mailgun va a recoger absolutamente todo el correo que llegue a nuestro dominio, y procesarlo según las rutas que configuremos. La opción mas básica es crear una ruta para recoger los mensajes de una cuenta y reenviarlos automáticamente a otra (ejem, Gmail otra vez?). Lo bueno es que podemos crear tantas rutas como necesitemos, por lo que podemos crear tantas cuentas de correo como queramos, y redirigir cada una de ellas.</p> <p>Para ello vamos a la opción de <em>Routes &gt; Create route</em>, usaremos los siguientes datos:</p> <table border="0" cellpadding="10" cellspacing="10" style="width:500px"> <tbody> <tr> <td>Expresion type</td> <td> Match recipient</td> <td>El tipo de regla</td> </tr> <tr> <td>Recipient</td> <td><a href="mailto:nuevacuenta@midominio.com">nuevacuenta@midominio.com</a></td> <td>Cuenta de correo que queremos configurar</td> </tr> <tr> <td>Actions</td> <td><a href="mailto:cuentadestino@servidor.com">cuentadestino@servidor.com</a></td> <td>Activar la opción Forward</td> </tr> <tr> <td>Description</td> <td>Nuestra descripción</td> <td>Algo para identificar la regla</td> </tr> </tbody> </table> <p>De este modo podemos ir creando las reglas que necesitemos para todos los buzones que queramos configurar. Como veis no es necesario configurar nada en nuestro cliente de correo, ya que no se usa un servidor POP3 o IMAP, sino que simplemente Mailgun se encargará de reenviar los correos a los recipientes adecuados.</p> <h2>Conclusiones</h2> <p>Cumple perfectamente lo que esperaba de el servicio, y a coste 0 patatero. Me ahorro el tedio de configurar mi propio MTA, y además tengo un plataforma que me va a permitir jugar con el correo si lo necesito. La configuración es muy sencilla y lleva poco tiempo, y el único problema que tuve fue el tema de poner el mail.* delante del dominio.</p> <p>Hay par de cosas a comentar:</p> <ul> <li>A veces los correos tardan un ratito en llegar, mas de lo usual con un servicio de correo 'normal', pero llegan.</li> <li>Si configuráis esto con Gmail, el muy cabrón no os va a mostrar el mensaje recibido, al enviar el correo desde la misma cuenta que lo va a recibir. Tenéis que usar una cuenta diferente para enviar y recibir.</li> </ul> <p>Aparte de este par de detalles, el servicio funciona bastante bien, y tiene mucha potencia si de verdad necesitamos realizar operaciones con estos correos, ya que podemos configurar una URL para recibirlos por medio de servicio web, por ejemplo. En mi caso, para lo que yo lo quería, me va perfecto.</p> <p>Ya me contaréis si lo utilizáis o no.</p> <p> </p> <h3>Referencias</h3> <ul> <li><a href="https://mailgun.com" target="_blank">https://mailgun.com</a></li> <li><a href="https://simplyian.com/2015/01/07/Hacking-GMail-to-use-custom-domains-for-free/" target="_blank">https://simplyian.com/2015/01/07/Hacking-GMail-to-use-custom-domains-for-free/</a></li> <li><a href="http://blog.codinghorror.com/so-youd-like-to-send-some-email-through-code/" target="_blank">blog.codinghorror.com/so-youd-like-to-send-some-email-through-code/</a></li> <li><a href="http://www.digitalocean.com/community/tutorials/why-you-may-not-want-to-run-your-own-mail-server" target="_blank">www.digitalocean.com/community/tutorials/why-you-may-not-want-to-run-your-own-mail-server</a></li> </ul> </div> </div> <div class="group-footer"> <section> <h2>Comments</h2> <article data-comment-user-id="0" id="comment-239" about="/en/comment/239" typeof="schema:Comment" class="js-comment"> <mark class="hidden" data-comment-timestamp="1619643742"></mark> <footer> <article typeof="schema:Person" about="/user/0"> </article> <p><span rel="schema:author">Subido por <span lang="" typeof="schema:Person" property="schema:name" datatype="">Sergio Rodriguez (no verificado)</span> el Sáb, 18/04/2020 - 02:53</span> <span property="schema:dateCreated" content="2020-04-18T00:53:01+00:00" class="hidden"></span> </p> <a href="/en/comment/239#comment-239" hreflang="en">Enlace permanente</a> </footer> <div> <h3 property="schema:name" datatype=""><a href="/en/comment/239#comment-239" class="permalink" rel="bookmark" hreflang="en">Error al realizar envio</a></h3> <div property="schema:text" class="field field--name-comment-body field--type-text-long field--label-hidden field--item"><p>No sirvio de nada esta informacion no me dijo como debo enviarlo, no me dice cual es la diferencia entre el usuario, la contraseña, el correo, etc muchas cosas, si uso el correo con el que me registre me dice que los subdominios algo, si uso el postmaster me da el mismo error, tengo una gran cantidad de log de mensajes rechazados</p> </div> <drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=239&amp;1=default&amp;2=en&amp;3=" token="iRTrDfGlQMKw8mZYv_2lyVcfDQM86X4Z_Dyr_BjhDyc"></drupal-render-placeholder> </div> </article> <article data-comment-user-id="0" id="comment-547" about="/en/comment/547" typeof="schema:Comment" class="js-comment"> <mark class="hidden" data-comment-timestamp="1619644926"></mark> <footer> <article typeof="schema:Person" about="/user/0"> </article> <p><span rel="schema:author">Subido por <span lang="" typeof="schema:Person" property="schema:name" datatype="">José Luis (no verificado)</span> el Vie, 25/09/2020 - 10:19</span> <span property="schema:dateCreated" content="2020-09-25T08:19:17+00:00" class="hidden"></span> </p> <a href="/en/comment/547#comment-547" hreflang="en">Enlace permanente</a> </footer> <div> <h3 property="schema:name" datatype=""><a href="/en/comment/547#comment-547" class="permalink" rel="bookmark" hreflang="en">Gran artículo!</a></h3> <div property="schema:text" class="field field--name-comment-body field--type-text-long field--label-hidden field--item"><p>Hola,<br /> he leído este artículo y me he sentido identificado puesto que he tenido los mismos problemas / ideas que tú. Lástima no haberlo encontrado antes y haberme ahorrado algo de tiempo (sobre todo con lo del subdominio).<br /> Muy bueno!</p> </div> <drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=547&amp;1=default&amp;2=en&amp;3=" token="UC-VqWiQNp_sfdDEkuvwWK_xd0aaqhOccVTNVRI71Gk"></drupal-render-placeholder> </div> </article> <h2>Añadir nuevo comentario</h2> <drupal-render-placeholder callback="comment.lazy_builders:renderForm" arguments="0=node&amp;1=19&amp;2=comment&amp;3=comment" token="qxWv4qHZP5DVri8yNHVDOGyFO3855_xVgGs6v6Fkg1I"></drupal-render-placeholder> </section> </div> </article> Sat, 25 Feb 2017 17:11:38 +0000 root 19 at https://www.carloscarrascal.com