{"id":1350,"date":"2016-04-12T09:07:29","date_gmt":"2016-04-12T09:07:29","guid":{"rendered":"http:\/\/esferas.org\/msqlu\/?p=1350"},"modified":"2016-04-17T08:59:03","modified_gmt":"2016-04-17T08:59:03","slug":"qpsmtpd-como-frontal-para-mi-correo","status":"publish","type":"post","link":"https:\/\/esferas.org\/msqlu\/2016\/04\/12\/qpsmtpd-como-frontal-para-mi-correo\/","title":{"rendered":"qpsmtpd como frontal para mi correo &#8230;"},"content":{"rendered":"<p>&#8230; con muchas ideas para realizar si funciona correctamente.<\/p>\n<p><!--more--><\/p>\n<p>Comenzar\u00e9 explicando el por qu\u00e9 me he decidido a utilizar un frontal como <a href=\"http:\/\/www.qpsmtpd.org\/\">qpsmtpd<\/a> para dar servicio SMTP si con el programa <em>exim4<\/em> que estoy empleando parece ser suficiente. La raz\u00f3n fundamental es que el env\u00edo de correo, que es algo m\u00e1s que solucionado desde hace tiempo, y la identificaci\u00f3n del spam juntos no forman buena mezcla.<\/p>\n<p><em>exim4<\/em> puede lidiar con ello, por supuesto, pero entre que nunca he llegado a cogerle el punto a su configuraci\u00f3n y que los mecanismos antispam empiezan a necesitar medidas desesperadas, su configuraci\u00f3n ha crecido de forma excesiva y se ha vuelto para mi poco manejable.<\/p>\n<p>Encontr\u00e9 en el programa <em>qpsmtpd<\/em> una buena base para separar las dos tareas y darme posibilidades futuras:<\/p>\n<ul>\n<li>Sus funciones son muy claras: aceptar conexiones SMTP externas y env\u00edar correo para que otros lo despachen.<\/li>\n<li>Est\u00e1 escrito en Perl y puede ampliarse si se conoce el lenguaje.<\/li>\n<li>Incluye un buen n\u00famero de controles de acceso ya de base.<\/li>\n<\/ul>\n<p>As\u00ed que lo he instalado en mi dominio principal (<em>taquiones.net<\/em>) y le he dado una oportunidad que no me ha defraudado, exceptuando el complemento <em>tls<\/em> para las conexiones seguras de usuarios con detalles como los que cuento m\u00e1s abajo.<\/p>\n<p><em>qpsmptd<\/em> tras la instalaci\u00f3n est\u00e1 listo para aceptar correo y reenviarlo al servidor local <em>exim4<\/em> que debemos haber desviado para que s\u00f3lo acepte conexiones locales (127.0.0.1).<\/p>\n<p>La configuraci\u00f3n es simple: emplea un archivo llamado <\/p>\n<pre class=\"inline:true decode:1 \" >\/etc\/qpsmtpd\/plugins<\/pre>\n<p> donde se definen los complementos que tiene que cargar y permite en cada l\u00ednea indicar los posibles par\u00e1metros. Algunos complementos hacen uso de esta caracter\u00edstica y otros adem\u00e1s (\u00f3 unicamente) leen archivos contenidos en el directorio de configuraci\u00f3n.<\/p>\n<p>Dado que los complementos est\u00e1n escritos como m\u00f3dulos Perl para leer su documentaci\u00f3n (si existe) se puede emplear la siguiente construcci\u00f3n<\/p>\n<pre class=\"lang:sh decode:true\">$ perldoc \/usr\/share\/qpsmtpd\/plugins\/PLUGIN<\/pre>\n<h4>Caracter\u00edsticas<\/h4>\n<h5>Conexiones seguras (tls)<\/h5>\n<p>Para activar conexiones seguras v\u00eda TLS se tiene que activar este complemento indicando d\u00f3nde est\u00e1n los certificados digitales:<\/p>\n<pre class=\"lang:default decode:true \">tls \/etc\/qpsmtpd\/ssl\/server.crt \/etc\/qpsmtpd\/ssl\/private.key \/etc\/qpsmtpd\/ssl\/ca.crt<\/pre>\n<p>Ojo que si no tiene acceso a dichos archivos (no existen o no hay permisos para ello) es d\u00edficil averig\u00fcar el por qu\u00e9. Una forma de saber si lo hemos hecho bien es realizar una conexi\u00f3n normal y saludarle:<\/p>\n<pre class=\"lang:default decode:true\">victor@sarajevo:~$ telnet taquiones.net smtp\r\nTrying 178.62.25.73...\r\nConnected to taquiones.net.\r\nEscape character is '^]'.\r\n220 spin.taquiones.net ESMTP qpsmtpd 0.84 ready; send us your mail, but not your spam.\r\nehlo sarejevo\r\n250-spin.taquiones.net Hi 240.red-79-148-243.staticip.rima-tde.net [79.148.243.240]\r\n250-PIPELINING\r\n250-8BITMIME\r\n<strong>250-STARTTLS<\/strong>\r\n250 AUTH PLAIN LOGIN\r\nquit\r\n221 spin.taquiones.net closing connection. Have a wonderful day.\r\nConnection closed by foreign host.\r\nvictor@sarajevo:~$ \r\n<\/pre>\n<p>Si no hay listada la l\u00ednea resaltada (<em>STARTTLS) <\/em>no est\u00e1 funcionando.<\/p>\n<h5>Usuarios autentificados con LDAP<\/h5>\n<p>Para ello tenemos que activar el complemento <em>auth\/auth_ldap_bind<\/em> (el primer <em>auth\/<\/em> es porque est\u00e1 en un subdirectorio) incluyendo la l\u00ednea en el archivo de configuraci\u00f3n e indicarle d\u00f3nde buscar. Aunque acepta par\u00e1metros me parece m\u00e1s c\u00f3modo usar el archivo <\/p>\n<pre class=\"inline:true decode:1 \" >\/etc\/qpsmtpd\/ldap<\/pre>\n<p> con un contenido tan simple como el siguiente:<\/p>\n<pre class=\"lang:default decode:true \">ldap_base ou=users,dc=taquiones,dc=net\r\n<\/pre>\n<p>Se pueden indicar m\u00e1s cosas pero la forma m\u00e1s r\u00e1pida de ponerlo en marcha es esa. Le indica que conecte con el servidor local LDAP e intente hacer una conexi\u00f3n con los par\u00e1metros que ha recibido del usuario. Si funciona el usuario est\u00e1 acreditado para enviar correo y si no pues no.<\/p>\n<h5>Registro de eventos<\/h5>\n<p>El complemento <em>logging<\/em> est\u00e1 activo de forma predeterminada. Si echamos un vistazo al archivo\u00a0<\/p>\n<pre class=\"inline:true decode:1 \" >\/etc\/qpsmtpd\/logging<\/pre>\n<p> vemos que est\u00e1 cargando el complemento especializado <em>logging\/file<\/em> para registrar sobre un archivo<\/p>\n<pre class=\"lang:default decode:true \">logging\/file loglevel LOGDEBUG \/var\/log\/qpsmtpd\/qpsmtpd.log\r\n<\/pre>\n<p>El nivel de registro se indica con un simple valor num\u00e9rico en el archivo <\/p>\n<pre class=\"inline:true decode:1 \" >\/etc\/qpsmtpd\/loglevel<\/pre>\n<p>.<\/p>\n<h4>Enlaces y referencias<\/h4>\n<ul>\n<li><a href=\"http:\/\/archive.oreilly.com\/pub\/a\/sysadmin\/2005\/09\/15\/qpsmtpd.html\">Using Qpsmtpd by Matt Sergeant<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8230; con muchas ideas para realizar si funciona correctamente.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","webmentions_disabled_pings":false,"webmentions_disabled":false,"footnotes":""},"categories":[6],"tags":[18,221,553,515],"class_list":["post-1350","post","type-post","status-publish","format-standard","hentry","category-debian","tag-administracion-de-sistemas","tag-exim","tag-qpsmtpd","tag-smtp"],"_links":{"self":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/1350","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/comments?post=1350"}],"version-history":[{"count":0,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/1350\/revisions"}],"wp:attachment":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/media?parent=1350"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/categories?post=1350"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/tags?post=1350"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}