Questa pagina descrive come mi sono configurato un serverino per la posta di casa basato su Debian Woody che:
- usa Exim come MTA, configurato per consegnare la posta in formato maildir
- usa Courier-imap per servire la posta ai MUA
- usa fetchmail + procmail per recuperare la posta esterna
Innanzitutto, vediamo di configurare Exim per consegnare la posta in formato maildir: per fare questo, basta modificare ”/etc/exim/exim.conf”: la regola per il trasporto “local_delivery” si può modificare in:
Questa pagina descrive come mi sono configurato un serverino per la posta di casa basato su Debian Woody che:
- usa Exim come MTA, configurato per consegnare la posta in formato maildir
- usa Courier-imap per servire la posta ai MUA
- usa fetchmail + procmail per recuperare la posta esterna
Innanzitutto, vediamo di configurare Exim per consegnare la posta in formato maildir: per fare questo, basta modificare ”/etc/exim/exim.conf”: la regola per il trasporto “local_delivery” si può modificare in:
local_delivery:
driver = appendfile
group = mail
mode = 0660
mode_fail_narrower = false
envelope_to_add = true
return_path_add = true
# file = /var/spool/mail/${local_part}
maildir_format
directory = ${home}/Maildir
ovvero la posta locale ora viene consegnata direttamente nella home del destinatario locale, in formato maildir, nella directory “Maildir”. Questo vale per tutti gli utenti.
Il secondo passo consiste nell’installare il pacchetto “courier-imap”, che in Woody già include il supporto IMAP. Opzionalmente, si può aggiungere anche il pacchetto “courier-imap-ssl”, se si vuole che la comunicazione avvenga via SSL.
Il terzo passo consiste nel modificare ”/etc/fetchmailrc” in modo che prelevi la posta dal server dell’ISP e la spedisca all’Exim in locale, che provvederà alla consegna. Ad esempio:
poll nome.server.smtp.del.provider
protocol pop3
user nomeutente
pass password
fetchall
L’ultimo passo consiste nell’avviare un MUA che abbia supporto IMAP (i.e. Evolution, o Sylpheed, o Mozilla mail) e configurarlo in modo che usi la macchina locale come server IMAP.
In alternativa a fetchmail (visti alcuni problemi di autenticazione) si può utilizzare getmail (scritto in Python) che è altrettanto versatile. Creare nella propria home la directory .getmail e all’interno creare un file di nome getmailrc adattando il seguente esempio:
[default] # This section provides default arguments and values,
# and variables which can be used in other sections
verbose = 1 # Be verbose by default
readall = 0 # Retrieve only new messages by default
delete = 1 # Delete mail after retrieval by default
message_log = /var/log/getmail.log # Log message retrieval and delivery to this file by default
timeout = 240 # TCP timeout value; increase if on a poor connection or
# slow POP3 server. getmail defaults to a 180 second timeout.
max_message_size = 0 # Don't retrieve messages over 1MB (MiB). Default is 0, which
# means no limit.
[MYISP's Mail] # Simple configuration for a single-user POP3 mailbox
server = pop3.myisp.org
port = 110
username = myusername
password = "my password" # no password specified; prompt for it when getmail is run
use_apop = 1 # Use APOP authentication for this account instead of
# cleartext PASS
postmaster = ~myuseronlinux/Maildir/ # Default delivery to this Maildir
message_log = "" # Don't log for this account
# No "local" directives necessary.
recipient_header = received # For this account, only look for recipient headers
recipient_header = x-envelope-to # in "Received:" and "X-Envelope-To:" headers
no_delivered_to = 1 # Don't add a Delivered-To: header for this mailbox
no_received = 1 # Don't add a Received: header for this mailbox
dopo di che è sufficiente chiamare getmail, probabilmente si può schedulare in modo che faccia un poll,
p.s.: se si usa fetchmail exim non serve a meno che non si voglia usarlo come server SMTP in uscita 😉
Il buon DiaoLin aggiunge inoltre che con Courier è possibile avere (via IMAP) dei folder condivisi tra più utenti.
La classica email info@tuosito.com viene letta probabilemte da più di una persona, ma col metodo normale la stessa mail viene postata ad un alias che fa riferimento a più destinatari interni che ovviamente non sanno se gli altri hanno già letto il messaggio.
E qui veniamo agli shared-folders.
Installate courier-imap, poi create una cartella con permessi 770 in /home con il comando:
/usr/lib/courier-imap/bin/maildirmake -S public
e avrete una cartella public che conterrà tutti gli shared folders.
Dopodiché,:
/usr/lib/courier-imap/bin/maildirmake -s write -f info /home/public
crea una cartella info con permessi di scrittura per tutti.
Poi se vorremo che solo gli utenti del gruppo pippo abbiano accesso alla cartella eseguiremo:
chgrp -R pippo /home/public/.info
chmod -R 0770 /home/public/.info
Poi mi direte: ma gli utenti come fanno a sottoscriverla?
Semplice: nella maildir dei vari utenti che devono vedere info eseguiamo questo comando:
ln -s /home/public/.info .info
oppure facciamo una cosa server-side: creiamo il file /usr/lib/courier-imap/etc/maildirshared, lo editiamo e ci mettiamo dentro:
public<TAB>/home/public
(il <TAB> e` ovviamente un carattere di tabulazione).
Ogni volta che abbiamo accesso a courier-imap abbiamo la possibilità di sottoscrivere le cartelle dichiarate in questo file, e se aggiungete altre cartelle potete gestire il tutto direttamente da qui.
Per il deliver verso quella cartella arrangiatevi con il vostro mailserver 🙂
Risultato dell’operazione: * arriva l’utente pippo e legge le mail di info * quando arriva l’utente topolino si accorge che le ultime mail arrivate sono già state lette.
Io consiglio di creare un bell infoIN e infoOUT, cosicché sia le mail entranti che le risposte vanno nelle shared-folders e tutti gli utenti possono vedere cosa è successo su info senza chiedere niente a nessuno.
Se è pubblica, è pubblica… e basta.