Il software è come il sesso, è meglio quando è libero. (Software is like sex, it's better when it's free).

— Linus Torvalds

ArchLinux Small Business Server (17) - Mail Server (2)

http://www.stenoweb.it/files/blog/archlogo.png Iniziamo la configurazione del nostro Mail Server. Il primo tassello è senza dubbio Postfix il nostro (mio?) MTA preferito. Forse il fatto che ci sia IBM all'origine ha per me il suo peso ? Bando alle ciance e via con i lavori ...

Postfix MTA

Postfix è un popolare, scalabile e sicuro MTA scritto da Witse Venema mentre lavorava in IBM. Postfix era originariamente noto come VMailer ed è stato anche commercializzato da IBM come Secure Mailer. Nel 1999, il suo nome è diventato Postfix, e il resto è storia.
In questa guida l'ho scelto perchè è affidabile, veloce e (relativamente) facile da gestire.
Il suo file di configurazione è facile da leggere e modificare, anche se ovviamente è utile conoscere le diverse opzioni che è possibile impostare e tutti i loro valori possibili (o almeno i principali vista la mole degli stessi...).
Sono stati scritti libri interi su Postfix, quindi inutile sottolineare che questo è solo un buon punto di partenza.

Configurazione

Abbiamo già installato Postfix, ora procediamo con la configurazione base che si ottiene modificando il file /etc/postfix/main.cf , iniziamo da qui :

sudo nano /etc/postfix/main.cf

con questi parametri :
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
mail_owner = postfix

myhostname e mydomain

Definiamo il nome host internet del nostro server, di default il primo è il valore ritornato da gethostbyname() , il secondo il nome del dominio :

myhostname = archi.mede.it
mydomain = mede.it

myorigin

Questo identifica i nomi di dominio da cui si assume che le mail locali arrivino e sono inviate. E' più difficile da spiegare che da scrivere :). Dal momento che noi non abbiamo bisogno di domini multipli, impostiamo questo parametro uguale a mydomain.

myorigin = $mydomain

mydestination

La lista dei domini verso i quali le mail sono inviate localmente. Insomma, per queste destinazioni le mail vengono considerate locali e trasferite alle caselle di posta locali.

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

mynetworks

Questo identifica le reti (o gli specifici host), che invieranno posta da questo server. Di default Postfix riceve le mail da tutte le interfacce di rete installate, ma permette di inviare solo dalla interfaccia di loopback (127.0.0.1) che, nel nostro caso, non và ovviamente bene. Il valore del parametro mynetworks può essere un singolo host, un indirizzo IP e la maschera di rete per indicare un range di host o di una sottorete, o qualsiasi numero di host separati da virgola o indirizzo IP e associati netmasks.
Questo parametro è molto importante, deve essere presente e deve contenere SOLO la rete o gli host autorizzati, altrimenti il vostro server si trasforma in un open relay, ovvero un server attraverso cui chiunque può inviare mail. Gli open relay sono il bersaglio preferito dagli spammers, e sono, per fortuna, una razza quasi estinta (gli OpenRelay, non gli Spammers ...).
Nel nostro caso il mail server permetterà alla rete interna 192.168.20.* di inviare mail attraverso di esso:

mynetworks = 127.0.0.0/8, 192.168.20.0/24

masquerade_domains

Ora i nostri utenti di rete invieranno mail ma molti client di posta inviano la mail usando il fully qualified domain name dell'host da cui inviano la mail. Per capirci meglio: se il mio host si chiama mybox e il mio utente steno chi riceve le mail che spedisco vede il mittente nella forma steno@mybox.mede.it che non è esattamente quello che voglio. Probabilmente non ho nemmeno un utente in quell'host e non riusciranno a rispondere alle mie mail. Risolviamo questo problema con il parametro masquerade_domains. Postfix sostitusce la parte domain con quanto specificato qui.

masquerade_domains = mede.it

Ora tutti gli host della mia rete possono inviare mail attraverso Posfix senza che venga identificato il nome dello specifico host che ha originato la mail. Le mail inviate dal mio host di esempio avranno come mittente steno@mede.it.

alias_maps e alias_database

Generalmente coincidono e indicano l'organizzazione e il nome del file contenenti gli alias locali: un elenco di equivalenze che permettono di attribuire più indirizzi a un unico utente

alias_maps = hash:/etc/postfix/aliases
alias_database = $alias_maps

mailbox_size_limit

Massima dimensione delle mailbox. In questo caso 0 (zero) specifica nessun limite.

mailbox_size_limit = 0

home_mailbox

Specifica dove verrà salvata la posta dell'utente relativamente alla propria home. Se non specifico nulla viene usato il formato mbox e salvato un file con il nome utente in /var/spool/mail. Io preferisco il formato Maildir, e specificando il seguente parametro ogni mail ricevuta crea un file in /home/nomeutente/Maildir

home_mailbox = Maildir/

Maggiori informazioni le trovate sul sito di postfix.

Testare Postfix

Avviamo postfix per fare un test se tutto funziona regolarmente :

sudo /etc/rc.d/postfix start

Installiamo telnet e colleghiamoci con sulla porta 25
sudo pacman -S netkit-telnet
telnet localhost 25

Dovrei ottenere la risposta:
Trying 127.0.0.1...
Connected to archi.
Escape character is '^]'.
220 archi.mede.it ESMTP Postfix

Ora iniziamo il colloquio :
helo 192.168.20.10

Postfix risponde:
250 archi.mede.it

Continuiamo a scrivere (dopo ogni riga premete invio) :
mail from:test@gmail.com
rcpt to: admin@mede.it
data
subject: Mail di prova
Salve, ti mando una mail di prova
.

Dopo il "." Postfix dovrebbe rispondermi con qualcosa di simile:
250 2.0.0 Ok: queued as 13BF410D898D

Il numerone 13BF410D898D è un numero random che cambia ogni volta.
Ora digitando:
quit

Si esce. Se non avete ricevuto errori siete a posto. Magari guardiamo se admin ha ricevuto la mail, per ora ci accontentiamo di guardare il file con il nostro editor. Andiamo in /home/admin/Maildir/new e dovrei vedere un file di testo che posso editare e/o visualizzare. Ad esempio :
sudo nano /home/admin/Maildir/new/1198938050.V803I22110bM48209.archi

E' la mail che avete appena inviato ? :)

Aliases

Abbiamo configurato postfix perchè usi il file /etc/postfix/aliases per gli alias, facciamo una piccola modifica al file perchè mandi le mail di sistema al nostro utente admin anzichè al predefinito (che abbiamo disabilitato) root.

sudo nano /etc/postfix/aliases

All'inizio del file dovrei vedere una cosa del genere (se non c'e' basta aggiungerla) :
#Person who should get root's mail. Don't receive mail as root!
#root: you

Togliamo il commento dalla seconda riga a mettiamo admin:
root: admin

Usciamo dall'editor e digitiamo:
newaliases

Ora le mail dirette a root verranno girate al nostro utente admin.

Avvio del servizio

Come al solito includiamo postfix dell'array DAEMONS in /etc/rc.conf :

DAEMONS=(... ... ... ... ... postfix ... ... ...)

Tutto qua ?

Ora il nostro server può inviare mail dalla nostra rete. Tutto qua ? Eh eh, magari. Diciamo che già funziona, e in un mondo perfetto di sole persone oneste potremmo fermarci qua.
Peccato non sia così e che dobbiamo difenderci dai rompic... che popolano la rete e che vogliono magari venderci pillole blu anche a Natale...

Meglio rimboccarci le maniche e vedere come possiamo almeno rendere loro la vita un po' più difficile.

Alla prossima.

At this juncture in your YouTube online marketing strategy, it is necessary to notice that like Twitter and Twitter, YouTube is a social media marketing system.