Firmare automaticamente le email in uscita da postfix

Scrivo questa guida perché, trovatomi nella situazione di dover implementare questa funzione, non ho trovato nulla di veramente completo nello spiegare come. Come saprete se avete avuto a che fare con esso, postfix supporta delle estensioni, i cosiddetti “milters”. Ora ci tengo a precisare che le impostazioni che vi mostrerò sono dedicate alla mia configurazione che include opendkim e amavis-new. Il milter che consente di firmare tramite S/MIME si chiama signing-milter.

Nella fattispecie, bisogna farli agire in quest’ordine: amavis, signing-milter e infine opendkim. Lasciare opendkim per ultimo è importante perché bisogna assicurarsi che l’email non venga più toccata dopo la firma.
Iniziamo col procurarci un certificato dedicato alla firma delle email. StartSSL e Comodo li offrono gratuitamente. Consiglio Comodo perché i certificati possono essere revocati gratuitamente, mentre StartSSL si fa pagare 25$. signing-milter richiede che certificato e chiave privata siano in formato pem senza password. Per convertirli usiamo openssl:

openssl pkcs12 -export -in email.crt -inkey email.key -out email.pem -nodes

Ora signing-milter, per associare i certificati alle email, utilizza un database statico in formato CDB. Immaginiamo di dover associare [email protected] al certificato /etc/signing-milter/email.pem. Per fare ciò, creiamo un file vuoto, ad esempio db.txt, e poniamo come prima riga:

+13,29:[email protected]>/etc/signing-milter/email.pem

Creiamo ora il database:

cdb -c signingtable.cdb db.txt

Ricordo che ogni processo che gestisce dati sensibili dovrebbe utilizzare un utente diverso. Creiamone uno per signing-milter e associamo ad esso i file:

adduser –system –no-create-home –group signingmilter

chown -R signingmilter:signingmilter /etc/signing-milter

chmod 500 /etc/signing-milter

chmod 400 /etc/signing-milter/*

Scaricate i sorgenti di signing-milter, compilateli e mettete il binario in /usr/sbin. Create uno script init.d per avviare il daemon all’avvio con questi parametri:

-g signingmilter -s inet:9991 -t 60 -u signingmilter -m /etc/signing-milter/signingtable.cdb

Questo creerà un milter sulla porta 9991. Se non usate amavis, aggiungete queste righe al main.cf:

smtpd_milters=inet:localhost:9991

non_smtpd_milters=inet:localhost:9991

Se usate amavis, invece, fate queste modifiche:

  • togliete smtpd_milters e non_smtpd_milters dal main.cf
  • togliete no_milters dalla config di amavis nel master.cf
  • abilitate i milters nel master.cf aggiungendo sotto la riga da cui avete tolto no_milters:

    -o smtpd_milters=inet:localhost:9991

    -o non_smtpd_milters=inet:localhost:9991

Riavviate postfix e provate ad inviare una email. Tutto apposto?

Lascia una risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *