May 05

Spark Post: Mail relay host for mailings

Reading time: 1 – 2 minutes

This is going to be a very short post entry, I just want to refer a very interesting mail relay (smart host) which define itself like:

Email delivery services built for developers, by developers
Combined with your language of choice, using the power of our robust cloud API couldn’t be easier.

Open a SparkPost account today and send up to 100.000 emails per month for free. The best is you can do using SMTP or using a REST API; really nice easy to use an powerful control dashboard simplify externally keys management, statistics, templates for mailings, and many more features.

Personally I love the service because is extremely useful to be configured on SSMTP service of Linux as a default relay host, for personal and professional use. Another use could be to check end-to-end mail services.

Personally I love the service, and if you want to send really big mailings theirs costs are very competitive. 

Jun 05

Protecting your email with MXGuarddog

Reading time: 2 – 2 minutes

mxguarddogAfter using VMWare ESXi for a long time as a Hypervisor for my virtual servers I decided to stop paying OVH for that service and I migrated my virtual machines to VPS servers on OVH. At the end of the day only two VPS with a cost of 3€/month are enough and I can stop a 50€/month dedicated server.

The biggest challenge that I had to solve was migrate mail server to a new server. So far today I was using pfSense a firewall for my virtual servers. They were in a virtual network; pfSense anti-spam services and mail forwarding were enough to receive “cleaned” mail in my private mail server with Postfix and Dovecot.

New configuration is just a cheap VPS (1xCPU+2GB RAM+10GB SSD) with Ubuntu 16.04 and also with Postfix and Dovecot. But I decided to rent the anti-spam, anti-malware and anti-virus service to MX Guarddog. I discovered that service just surfing on the big G. Only 0.25 cents per account per month it’s a very good price and it does all the things that I need and much more. Configuration is really simple if you know what you are doing. They have a very good and simple control panel to manage the service. This is the perfect service to get what I need.

In the control panel you can do all that you need, manage mail accounts and domains. View quarantined mails and all required configurations and tests to validate everything is ready and also maintain white and black lists. We’ll see during next days if the service gets the quality that I expect, I hope I have found a very good and cheap resource.

Jan 30

New Ansible Role uploaded to Ansible Galaxy

Reading time: 2 – 2 minutes

A long time ago I wrote an entry post about how to set up the SMTP in linux boxes using a relay system you can find the post here: Relay mail from your server without MTA. Remember that SSMTP is not a SMTP service for your system but it’s more than enough for all servers that don’t work as a mail servers. Historically Unix/Linux uses sendmail command to send system notifications but usually this mails are lost because system configurations are not completed. My advice in this sense is use SSMTP.

In the past I used to use SSMTP with a GMail account but security constraints in Google mail services make it difficult to configure today. The new alternative is set up a free Mandrill account as a relay host. Mandrill is a Mailchimp service that allows you to send a lot of emails without problems and there is a free account that allows to send up to 12.000 mails per month free, more than enough usually. If you don’t know how to set up a Mailchimp account the best option to learn how to do it is follow the support documentation it’s very good IMHO.

When you have a lot of linux machines to administer you need something fastly replicable. As you know use Ansible is a very good option. Then I developed a new Ansible role to set up Mandrill accounts to SSMTP services massively using Ansible.

The Ansible role has been uploaded here: ssmtp-mandrill and the source code of the roles is in my github. Remember to install the role in your Ansible is easy:

ansible-galaxy install oriol.rius.ssmtp-mandrill

Then you only need to create your own playbook using the role and don’t forget to setup the variables with the Mandrill account settings.

May 01

Relay mail from your server without MTA

Reading time: < 1 minute Sometime you need to send notifications or simply you need to use sendmail command from your server, but you don't want to use a local mail server. Maybe use simple SMTP (ssmtp) could be a good idea to solve this kind of situations. I use to configure SSMTP with a GMail account to send notifications from server different daemons, for example, crontab, supervisord, etc. This is a cookbook configuration for SSMTP and GMail: /etc/ssmtp/ssmtp.conf
root=user@gmail.com
mailhub=smtp.gmail.com:587
rewriteDomain=
hostname=user@gmail.com
UseSTARTTLS=YES
AuthUser=user@gmail.com
AuthPass=password
FromLineOverride=YES

/etc/ssmtp/revaliases

root:username@gmail.com:smtp.gmail.com:587
localusername:username@gmail.com:smtp.gmail.com:587

Installation in ubuntu server is as easy as: apt-get install ssmtp

Oct 14

Screencast 0x00 – Com funciona el SMTP?

Reading time: 2 – 3 minutes

Tal com vaig comentar en el post del desè aniversari en aquesta temporada intentaré convertir moltes de les publicacions que faig en forma de podcast a un format d’screencast. Per tal de fer això ja fa uns mesos que he estat jugant amb la Wacom Bamboo. De fet, la primera prova que he fet pel podcast és el video que publico en aquest post i que alguns ja heu vist a través de youtube. Es tracta d’un video que parla sobre com funciona el protocol SMTP.

Algunes persones m’han comentat que li troben a faltar musiqueta de fons mentre parlo, de fet, és un tema que tinc molt en compte de fer. Malgrat això la post-producció dels videos que gravo és el que més em molesta de fer així doncs si algú s’anima a col·laborar serà benvingut perquè a mi és la part que menys m’agrada, es nota que per mi el món multimedia és només un mitjà, oi?

Bé doncs, si teniu algún suggeriment d’on treure música creative commons per acompanyar els meus monòlegs aviseu. Ja que fins que no tingui algo clar segurament ho continuaré publicant amb el format que he fet aquest primer pilot. Obviament estic obert a mil altres suggerències, tot i que la tònica serà la de sempre. És a dir, contingut molt tècnic i notes orientades a gent a perfil geek. Potser aquesta primera nota serà la més light ja que només la vaig fer per provar.

Dec 16

authsmtp – serveis de relay autenticat

Reading time: 2 – 2 minutes

Tot llegint documentació sobre temes de postfix que com sempre ja sabeu que hi estic molt posat he trobat una empresa que es dedica a vendre serveis de relay dels nostres dominis via processos autenticats. És a dir, podem usar el nostre servidor domèstic amb una simple ADSL amb IP dinàmica i a través d’ASMTP podem enviar correus a través d’una IP lliure d’RBLs, registre PTR i altres problemes similars. Per tant, els nostres correus sortiran a la xarxa de forma totalment legítima i ben protegits a través d’aquest enllaç. El millor són els preus del servei que són més que raonables. Per exemple, per moltes PIMES i sistemes domèstics el cost mensual no superaria els 2€-3€.

No us confongueu, els serveis de l’empresa són de relay és a dir, no fan de mail-backup per tant els correus entrants no els guardaran ells i els re-enviaran cap al vostre SMTP sinó alrevés; el que vosaltres envieu usarà com a smart-host el servidor d’aquesta empresa. A més d’aquest servei també fan còpies de seguretat de tot el que s’envia perquè es pugui consultar a posteriori i es comprova que no s’enviin correus duplicats. A més quan vosaltres no estigueu dintre de l’oficina o de casa podreu enviar correus directament contra l’ASMTP com si del vostre servidor de correu es tractés. Tot el correu que s’envia passarà també per un anti-virus per assegurar que no envieu virus sense voler als vostres destinataris, això és realment una descàrrega de feina molt gran pels servidors de la vostre empresa ja que sovint és el que més carrega els servidors de correu.

Si voleu donar un cop d’ull a l’empresa: AuthSMTP

Dec 12

ACL Policy Daemon for Postfix

Reading time: 3 – 4 minutes

Fins ara l’únic policy daemon que usava per postfix és el policyd v1 que esta fet amb C i per temes de rendiment em donava grans funcionalitats, rapidesa i escalavilitat sobretot pel seu backend en MySQL. Però avui m’he vist obligat a instalar el ACL Policy Daemon que esta programat amb Twisted+Python i que a través de la seva capacitat de configurar les regles d’accés al Postfix vai ACLs m’he pogut montar una funcionlitat un pel rebuscada que em calia per un client.

El problema és que aquest client necessita:

  • Rebre correu pels seus dominis
  • Permetre relay previa autenticació dels seus roadwarriors

Doncs bé això planteja un problema degut a una funcionalitat contradictoria. Si configurem el Postfix perquè rebi correu local, podem protegir aquest correu contre UBE tan com volguem i més però si l’origen especificat en la transacció SMTP indica que el remitent és una compte de correu del mateix domini que el destí (sovint la mateixa compte de correu), aquest correu s’acceptarà com a legítim i no es demanarà autenticació perquè l’MTA on s’està enviant el correu és el destí del mateix. Gràcies a això el correu serà acceptat al MTA i només quedarà a expenses del anti-spam i regles UBE anturar-lo, el qual malgrat via SPF i d’altres similars intentarà aturar aquest correu això no sempre serà possible i menys si els intents d’injecció són de l’ordre de desenes de milers al dia. Ens trobavem que alunes desenes passaben els filtres igualment.

Així doncs, gràcies a aquest policy daemon he pogut programar un regla que diu algo així:

  • si IP d’enviant no és local
  • si origen del correu és un domini local
  • si destí del correu és un destí local
  • si l’usuari no s’ha autenticat
  • NO es pot enviar aquest correu!

Els clients que estan fora de l’empresa (roadwarriors) sempre que envien un correu ho fan via ASMTP així doncs, si volen enviar un correu a alguna compte del mateix domini que la seva ho faran de forma autenticada. Per altre banda, si un client de correu intern a l’emrpesa intenta enviar un correu ho farà amb una IP local de l’empresa i aquest filtre no el bloquejarà.

Com podeu veure el problema és una mica enrabassat. Per altre banda, si voleu fer un cop d’ull al fitxer de configuració policy.conf (un dels fitxers de configuració del aplicyd) que he creat és de l’estil d’aquest:

acl wl client_address NET_IP/MASK
action nice_users DUNNO
access wl nice_users

acl remitent sender @example.com
acl desti recipient @example.com
acl aut sasl_method (PLAIN|LOGIN)
action rej REJECT Auth required
access remitent desti !aut rej

Malgrat jo he usat el apolicyd per temes molt concrets s’ha de dir que el seu codi font és molt entenedor i simple de modificar, a més de suportar moltíssimes funcionalitats de serie que permeten ajustar les nostres regles de filtrat moltíssim. Realment m’ha sorprès de forma molt positiva no m’esperava que estigués tan ben pensat.

Aug 05

podcast 1×12: mail-gateway (GatV2)

Reading time: 2 – 4 minutes

GatV2 es un servidor de correo para hacer smart-relay o para que se entienda mejor el concepto para usar como frontend del servidor de correo de la empresa o del ISP (backend). GatV2 nos filtra todo el correo UCE y nos ofrece una herramienta de gestión del SPAM.

El siguiente esquema ofrece una idea de donde estaría el GatV2:

GatV2 network schema

A través del podcast podreis seguir cual es el proceso que sigue un correo para pasar através del GatV2. Obviamente no es sencillo entender a la primera todo lo que hace pero a través de este gráfico (pinchar encima para zoom), de la explicación y de la documentación de la web del proyecto espero que podais comprender mejor el proceso.

inside GatV2 process

Para ver las capturas de pantalla a las que se habla durante el podcast pasarós por la documentación del proyeco GatV2.

Finalmente el podcast:

El podcast dur alrededor de 1h, así pues Jorge me ha ayudado a hacer una tabla de contenidos del mismo así pues, podeis ir directamente al minuto que os interesa del podcast gracias a la siguiente información:

  • Presentación: 0-1m44s
  • Historia: 1m44s – 3m
  • En que consiste: 3m – 8m15s
  • Los componentes: 8m15s – 24m20s
  • Como funciona: 24m20s – 42m49s
  • WebUI del DSPAM: 42m49 – 55m55s
  • Despedida y cierre: 55m55s – 56m56s

En los próximos dias publicaremos (Jorge y yo) el podcast dividido en pequeños MP3 en l página del proyecto GatV2 para mayor comodidad de los interesados en el proyecto.

Jun 11

Postfix tips

Reading time: 6 – 9 minutes

Aquest inici de setmana l’he passat moltes i moltes hores llegint documentació del Postfix per tal de solucionar un problema a un client que tenia una cua de correu inmensa i que no hi havia manera de servir perquè el servidor no donava coll. Doncs bé, degut a això m’he hagut de llegir molts documents i volia referenciar-los per no perdre’ls de vista ja que molts d’ells són interessentíssims. Realment cada dia que passa estic més convensut que Postfix és la millor opció com a MTA, diria que he passat moltes hores i molts anys provant sendmail, exim i qmail. Però l’experiència sempre m’ha dit que Postfix era el que em solucionava les problemàtiques més inversemblants i així ha estat aquest cop també.

  • Postfix Bottleneck Analysis: aquest document és una introducció a l’eina qshape la qual ens permet veure quin és l’estat de les diferents cues que té postfix, no només om a totals sinó també destriat en dominis i amb una distribució temporal del temps que fa que el correu és a la cua. Realment molt i molt útil per saber on tenim realment acumulat el correu i quines mesures hem de prendre.
  • postsuper – Postfix superintendent: aquesta comanda ens permet fer tasques de manteniment a les cues de postfix. Malgrat la comanda postqueue també permet fer tasques d’aquest tipus aquestes tasques són molt més limitades i orientades a usuaris que no pas a administradors del sistema. Perquè entengueu la potència del postsuper algunes de les seves funcions són: borrar missatges d’una cua concreta a través del seu ID, posar missatges en estat hold així aquests missatges no s’intenten enviar i els tenim retinguts fins que ens interessi, es poden re-encuar missatges que ja han estat encuats així podem tornar a aplicar-los filtres que s’havien aplicat malament, etc.
  • Postfix built-in content inspection: bàsicament es tracta d’un conjunt d’ordres del fitxer main.cf que permeten filtrar els correus en funció d’expressions regulars aplicades a la capçalera del correu (header_checks), cos del correu (body_checks), adjunts mime (mime_header_checks) o caçalers dels correus adjunts als correus (nested_header_checks).
  • Postfix After-Queue Content Filter: aquest document explica com filtrar els correus de formés molt més avançades, per exemple, s’explica la base que tenen de funcionar aplicacions com l’amavisd-new quan s’integren amb postfix. Al que refereixo és a tenir un postfix escoltant el port 25, quan entra un correu aquest s’envia a un port de localhost, allà es processa el correu i es generen d’altres correus amb informes d’spam si fa falta i després es re-injecta a un altre port localhost en aquest cas publicat pel postfix i finalment aquest correu es serveix. Doncs això que sembla senzill de montar té les seves pecualiritats que cal tenir en compte i en aquest document s’expliquen molt i molt bé, a més ens referencia a eines que comento a continuació per crear els nostres propis SMTP proxies on podem aplicar els filtres que ens interessin. Un exemple d’aplicació, a part dels típics filtres anti-spam, seria montar serveis de comandes via SMTP o sigui, que enviant un correu amb un format concret aquest fes una serie d’accions i el resultat tornés al seu origen via email. En la meva època del packet radio usabem això per fer smtp2ftp, per exemple.
  • smtpprox – simple efficient SMTP proxy in perl: amb aquesta eina és trivial montar les nostres aplicacions a mida per fer filtres de correu tal com comentava en el punt anterior, a més des de la pròpia pàgina es referència a moltíssims patches per tal de fer funcions espcífiques amb aquesta eina. Alguns exemples: podem fer el mateix que fa amavisd-new però amb un codi molt més simple, podem fer de proxy d’autenticació per un SMTP que no té autenticació montada, tenir una llista de blacklist en MySQL, etc.Bàsicament l’SMTP proxy només fa de servidor SMTP per un costat i client SMTP per l’altre, al mig nosaltres podem processar el correu segons la seva informacó: capaçalera, adjuns, contingut del correu, etc.

Volia comentar de forma explícita una de les solucions ineressants que es presenta al primer document, el que parla sobre qshape. La idea és que a través d’aquesta utilitat podem trobar un domini sobrel el que s’hi encuen molts correus i per tant la cua de sortida de correus es veu perjudicada perquè aquest destí monopolitza gran part de la cua. Doncs bé, es tracta de construir una cua de sortida de correu només per aquest destí i fer que els correus que vagin cap allà es processin a part.

Per montar això cal:

  • Modificar el fitxer master.cf i afegir un “smtp” transport per la destinació en concret. Això es faria així:
  • /etc/postfix/master.cf:
        # service type  private unpriv  chroot  wakeup  maxproc command
        fragile   unix     -       -       n       -      20    smtp
  • Fixeu-vos que fixem el número de processos a un màxim de 20, això vol dir que com a molt hi podran haver 20 instàncies simultanees del procés “smtp” per servir correus d’aquesta cua de sortida.
  • Al main.cf configurem els límits de la cua que s’usarà pel transport “fragile” que hem configurat.
  • /etc/postfix/main.cf:
    transport_maps = hash:/etc/postfix/transport
        fragile_destination_concurrency_failed_cohort_limit = 100
        fragile_destination_concurrency_limit = 20
    
  • Ara toca crear el fitxer de transport on indicarem que els correus per aquest domini es serveixen per una cua particular, al costat del nom de la cua si es vol es pot indicar un host i un port cap a on es farà relay:
  • /etc/postfix/transport:
        example.com  fragile:
    
  • Recordeu que després de crear el fixer transport cal fer un postmap transport.
  • Per veure quin és l’estat de la nova cua, només cal fer qshape fragile.

Espero que si no coneixieu postfix aquest petit post hagi servit per veure fins a quin punt és simple i dinàmic de configurar, no pretenia fer cap introducció només una pura referència de documentació que crec que a partir d’ara intentaré tenir aprop.

May 26

phpList: newsletters i mailings de correu OpenSource

Reading time: 6 – 9 minutes

phpList logoFa temps l’O.Manyà em va demanar una aplicació per fer just això i no n’hi vaig saber dir cap, el més frustrant és que ja coneixia aquesta eina de fa molt de temps però mai li havia fet massa cas. De fet, la veia com una evolució del mailman. Però ara me’n adono que és algo molt més corporatiu, és a dir, no és pas una eina per gestionar llistes de correu (diria que no és capaç de fer-ho). Sinó que esta molt més orientat al concepte de newsletter o de mailings. O sigui, ideal per emetre comunicats d’empresa als nostres clients o per escriure mailings personalitzats als nostres clients informant del que sigui. Després de fer un repàs per les moltíssimes funcionalitats què té diria que la pinta és excel·lent. A més si ús passeu per la web del phpList veure-ho que té força screenshots i screencasts que poden donar-vos una idea molt aproximada de tota la funcionalitat que té l’eina.
A continuació adjunto el llistat de funcionalitats que té l’eina, com deia val la pena invertir-hi una estona en donar un cop d’ull. M’ha cridat molt l’atenció la possibilitat de poder generar mailings a partir de subscripcions a RSS. Així doncs, si a l’empresa tenim un blog podriem emetre un butlletí de notícies de forma automàtica gràcies a aquesta funcionalitat.

  • The Web Interface lets you write and send messages, and manage phplist over the internet.
  • phplist keeps sending messages from your web server, even after you shut down your computer.
  • 100 000 + subscribers. phplist is designed to manage mailing lists with hundreds of thousands of subscribers. phplist is excellent with smaller lists too!
  • No duplicate messages. No ‘forgotten’ messages. phplist manages message delivery with a message queue, ensuring that every subscriber gets the email message, and that no subscribers receive two copies, even if they’re subscribed to more than one list!
  • Open/View Tracking tells you how many users opened your email message. This provides a minimum statistic, as many email clients with privacy or security policies block images (gmail, thunderbird, and others).
  • Click Tracking tracks links and URLs. Statistics can be viewed by message, URL or subscriber.
  • Multiple Subscribe Pages allow you to choose many different combinations of templates, languages, user attributes and lists.
  • Templates are completely customizable, and make site integration a breeze.
  • Multiple Templates on different subscribe pages can integrate phplist with several different web sites.
  • Subscriber Attributes like ‘name’, ‘country’, and other personal information, are completely customizable. You can specify what information you need to get from users when they subscribe.
  • User Specific Content. You can use Subscriber Attributes in message content to make each and every email message personalized with the subscribers name, country, or any other attribute.
  • HTML email messages. Subscribers can be given the choice between text or html email messages. You decide whether subscribers can choose, what the default choice is, and what format a message is sent in: text only, html only, or both!
  • The HTML Editor allows you to edit html messages from phplist using FCKeditor. TinyMCE is also available.
  • Internationalization. phplist is available in English, French, German, Spanish, Portuguese, Traditional Chinese, Dutch, Vietname and Japanese and translation work is in progress for other languages.
  • Easy Install via Fantastico, FTP upload, or SSH.
  • Multiple List Administrators. The super-admin can assign lists to List Managers, who can manage their users and lists. The super-admin user can ‘prepare’ messages that can be sent by list managers to their lists.
  • Subscriber Preferences. Every email message contains personalized URLs for subscribers to update their preferences or unsubscribe. Subscribers can update their own information and keep your database up to date. Unlike most other mailing list managers, in phplist subscribers can change their email address.
  • The User Management tools are excellent to manage and maintain large databases of subscribers.
  • Bounce Processing keeps your database clean of unused and non-existent email addresses.
  • Advanced Bounce handling let’s you teach phplist to distinguish between permanent and temporary message-delivery errors. You can define automated actions on receipt of bounce messages according to matches with your regular expressions.
  • CSV Import and Export. Use CSV and tab delimited files to import your existing list of users or to export the users on the phplist system for use in your in-house database. phplist’s database has a ‘foreign key’ to help keep multiple copies of databases synchronized without duplicating users.
  • Attachments can be uploaded and included in messages for download.
  • Send a Web page. Tell phplist the URL of a web page you want to send to your users, and phplist will fetch it and send it. You can even put subscriber-specific parameters in the URL.
  • RSS feeds can be automatically sent to a mailing list weekly, daily, or monthly.
  • PDF messages can be automatically created and sent as attachments to ensure that your message is seen the way it was designed by all your subscribers, regardless of their email message reader.
  • Batch Processing is useful in shared hosting environments. Set the maximum number of sent messages in a given time period.
  • Throttling can limit the load on your server so it doesn’t overload.
  • Domain Throttling limits the number of emails to specific domains to keep on the friendly side of their system administrators.
  • Scheduled Sending let’s you tell phplist when the message is to be sent.
  • Repetition. A message can be repeated automatically to send updated dynamic content and attachments.
  • Text from HTML. Text email messages are managed fluently in phplist. phplist will automatically create a text version of an html message. Optionally the message composer can create it manually.
  • PGP signing and encrypting (soon).
    Send your message digitally signed or encrypted, or both.
  • Email to Fax (soon).
    Configure the details of your favourite email 2 fax gateway and phplist will send the HTML version of the message as a PDF attachment to your fax gateway. The fax will include the images in the HTML.
  • Integration with other tools. Several systems exist on the internet that integrate phplist with your favourite CMS or blogging tool. Check out the Documentation for a list.