Differences between revisions 6 and 7
Revision 6 as of 2013-05-18 19:42:06
Size: 15719
Comment: sync with English master
Revision 7 as of 2014-03-23 09:09:28
Size: 15801
Comment: sync with English master
Deletions are marked like this. Additions are marked like this.
Line 303: Line 303:

Poi è necessario ricaricare apache:

{{{
/etc/init.d/apache2 reload
}}}

Translation(s): English - Italiano


Postfix è un MTA (agente di trasferimento della posta) sicuro.

Postfix

Installare e configurare Postfix in Debian

  • Installare postfix (ciò rimuoverà exim dato che due sistemi di posta non possono coesistere); se si ha un sito web, scegliere sito Internet quando la configurazione lo chiede):

apt-get install postfix
  • Controllare i file di registro mail.log, mail.err, mail.info, mail.warn per vedere se postfix è in esecuzione.

cat /var/log/mail.log
  • Aggiungere il proprio dominio ai file di configurazione, in modo che gli altri non possano abusare del proprio sistema di posta; viene fatto con postconf

postconf -e "myorigin = esempio.com"
  • Aggiungere il proprio nome host (nome del computer). (Se non si è sicuri del nome, usare il comando "hostname" che mostrerà il nome host.)

postconf -e "myhostname=server1.esempio.com"
  • Aggiungere i nomi di dominio che saranno gestiti dal proprio sistema.

postconf -e "relay_domains = esempio.com, esempio2.com, esempio3.com"
  • Riavviare il server Postfix:

postfix reload
  • Testare il server di posta; digitare:

telnet localhost 25
  • Si dovrebbe ottenere:

Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 server1.esempio.com ESMTP Postfix (Debian/GNU)
  • Ora auto-inviarsi un messaggio di posta:

mail from:<tu@tuoindirizzo.com>
rcpt to:<utente@esempio.com>
data
To: utente@esempio.com
From: tu@tuoindirizzo.com
Subject: Il mio primo messaggio di posta
Il mio primo messaggio con postfix in Debian dopo averlo installato e configurato.
Facile, direi. Ciao
  • Per terminare l'inserimento dei dati premere Invio, digitare un punto e premere Invio nuovamente.:

.
  • Poi

quit
  • Ecco fatto. Digitare "mail" nel terminale a riga di comando e vedere se si ha posta.
    • Passiamo al passo successivo:
    • Se si ha un router con un firewall, sarà necessario abilitare la porta 25 e fare il forwarding di quella porta sul proprio computer.
    • Sarà necessario inserire i record MX del proprio provider di dominio. (es. godaddy.com o dnspark.com)
    • Controllare i propri record MX: andare su http://www.iptools.biz/ e localizzare la voce "DNS lookup". Dal menu a discesa selezionare "MX". Inserire il proprio nome di dominio (es. esempio.com). Si dovrebbero vedere alcuni record. Se non si vede alcun record MX tornare al punto precedente. È necessario avere i record MX altrimenti gli altri computer non saranno in grado di vedere il proprio computer all'invio della posta.

    • Comandi utili:

qshape
mailq
qshape deferred
postsuper
postsuper -r ALL   (requeue all emails)
  • Si dovrebbe essere a posto. Se il proprio ISP blocca il traffico quando si ha bisogno di fare il login ai loro servizi smtp, vedere Postfix e sbcglobal/yahoo/att più sotto.

anti-spam: restrizioni smtp

  • La prima battaglia inizia dal proprio server perciò quello che segue andrebbe aggiunto ad ogni server di posta che si configura. Ciò assicura che qualsiasi computer che cerchi di inviare posta elettronica al proprio computer abbia un nome di dominio valido. (Gli spammer usano ad esempio myhomepc come nome di dominio. Questo impedirà loro di inviarvi spam.)
  • Inserire questo nel proprio file /etc/postfix/main.cf:

smtpd_recipient_restrictions = reject_invalid_hostname,
        reject_unknown_recipient_domain,
        reject_unauth_destination,
        reject_rbl_client sbl.spamhaus.org,
        permit

smtpd_helo_restrictions = reject_invalid_helo_hostname,
        reject_non_fqdn_helo_hostname,
        reject_unknown_helo_hostname

anti-spam: usare elenchi RBL

  • Un elenco RBL è una lista di domini con l'indicazione se sono fonte di spam o meno.

Inserire questo nel proprio file /etc/postfix/main.cf:

smtpd_client_restrictions = reject_rbl_client dnsbl.sorbs.net

Per informazioni su cosa è un rbl, vedere http://www.us.sorbs.net/mailsystems/postfix.shtml

e vedere per cosa non dobrebbe essere.

Server di posta gateway anti-spam e anti-virus in Debian

Postfix e sbcglobal/yahoo/att

  • SBC global blocca la porta 25 dei suoi utenti DSL:

    http://help.sbcglobal.net/article.php?item=4640

  • Vediamo come usare il server smtp di SBC con autenticazione per inviare posta elettronica. Fare quanto segue:
  • Installare questi due moduli (dicono a postfix come autenticarsi):

apt-get install postfix-tls libsasl2-modules
  • Aggiungere a main.cf usando postconf; digitare semplicemente (smtp.att.yahoo.com richiede la porta 587, negli altri casi non è necessaria):

postconf -e "relayhost = [smtp.sbcglobal.yahoo.com]:587"
postconf -e "smtp_sasl_auth_enable = yes"
postconf -e "smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd"
postconf -e "smtp_sasl_security_options = noanonymous"
  • Creare un file chiamato sasl_passwd in /etc/postfix/sasl_passwd. In esso inserire

[smtp.sbcglobal.yahoo.com]:587 nomeutente@sbcglobal.net:miapassword
  • Ora cambiare i permessi in modo che altri non possano leggerlo:

chmod 600 /etc/postfix/sasl_passwd
  • Ora usare postmap su di esso. (Crea un file stile database in modo che postfix può leggerlo)

postmap /etc/postfix/sasl_passwd
  • Riavviare postfix

postfix reload
  • Fatto. Si può usare "mutt" per inviare posta elettronica all'esterno. Controllare /var/log/mail.log per vedere se tutto funziona a dovere.

  • Dopo la transizione da sbcglobal ad att è necessario verificare il proprio indirizzo di posta elettronica tra le opzioni per la posta di yahoo. Se si è iscritti a centinaia di mailing list, sarà necessario sbloccare la propria porta 25 dato che è impossibile usare i server smtp att yahoo senza verificare ciascun indirizzo di posta elettronica.
  • Per sbloccare la porta 25 (ottenere che non sia filtrata) inviare una richiesta qui:Unfilter port 25 on smtp.att.yahoo.com

Inoltrare posta elettronica

  • L'inoltro della posta elettronica può essere fatto attraverso un file chiamato /etc/aliases

  • Eseguire questo comando per aggiungere mappe per gli alias:

postconf -e "alias_maps = hash:/etc/aliases"
  • Si possono ora aggiungere i propri utenti al file /etc/aliases in questo modo:

root: luca
  • Si possono inoltrare i messaggi di posta ad un indirizzo di posta elettronica differente:

luca: miaemail@esempio.com
  • Oppure si può inoltrare la propria posta e continuare a riceverne una copia nella casella di posta locale:

luca: luca miaemail@esempio.com
  • Quando si sono aggiunti tutti gli alias, eseguire il comando seguente che crea un file in stile database:

newaliases
  • Riavviare postfix

/etc/init.d/postfix reload

Indirizzi di posta virtuali

  • Se si desiderano indirizzi di posta virtuali, come abuse o postmaster, si può fare quanto segue.

  • Eseguire il comando seguente per aggiungere mappe di aliasi virtuali:

postconf -e "virtual_alias_maps = hash:/etc/postfix/virtual"
  • Creare un file /etc/postfix/virtual

vi /etc/postfix/virtual
  • E aggiungere i propri indirizzi di posta virtuali

postmaster info@esempio.com
abuse info@esempio.com
unqualsiasiindirizzo luca
  • Creare un file in stile database da questo file

postmap /etc/postfix/virtual
  • Riavviare postfix

/etc/init.d/postfix reload

Maildir

  • Per usare il formato maildir nelle propria caselle di posta, creando così un file separato per ciascun messaggio di posta, si possono usare i comandi seguenti:
  • Maildir ha alcuni vantaggi rispetto al formato mbox. (Mantiene i messaggi di posta in file separati, permette ad applicazioni multiple di leggere la posta, ecc.)
  • Eseguire questi comandi:

postconf -e "home_mailbox = Maildir/"
postconf -e "mailbox_command ="
  • Fatto. Ora la posta viene gestita in formato Maildir.

Mutt

  • Se si desidera leggere il proprio nuovo formato Maildir è necessario indicare a mutt di usarlo anch'esso. Modificare il suo file di configurazione globale:

vi /etc/Muttrc
  • Aggiungere queste righe alla fine del file:

set folder="~/Maildir"
set mask="!^\\.[^.]"
set mbox="~/Maildir"
set record="+.Sent"
set postponed="+.Drafts"
set spoolfile="~/Maildir"
  • Ora avviare mutt e inviare un messaggio di posta a sé stessi per vedere se tutto funziona come dovrebbe.

Postfix e le mailing list

Mailman con Postfix

(!) Le istruzioni sottostanti sono SBAGLIATE! Non si dovrebbe usare postfix-to-mailman.py e alias contemporaneamente. Leggere invece /etc/mailman/postfix-to-mailman.py.

  • Installare mailman:

apt-get install mailman
  • Quando questo è fatto, digitare:

newlist mailman
  • Avviare mailman

/etc/init.d/mailman start

relay_domains = esempio.com, lists.esempio.com
  • Nello stesso file aggiungere ,hash:/var/lib/mailman/data/aliases alla voce alias_maps

alias_maps = hash:/etc/aliases,hash:/var/lib/mailman/data/aliases
  • Ora digitare:

postconf -e "transport_maps = hash:/etc/postfix/transport"
postconf -e "mailman_destination_recipient_limit = 1"
  • In /etc/postfix/master.cf aggiungere:

mailman unix  -       n       n       -       -       pipe
   flags=FR user=list
   argv=/var/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user}
  • Modificare o creare /etc/postfix/transport. Aggiungere questa riga:

lists.esempio.com    mailman:
  • Poi usare postmap su di esso:

postmap /etc/postfix/transport
  • Ora modificare /etc/mailman/mm_cfg.py e aggiungere:

MTA = 'Postfix'
DEB_LISTMASTER = 'postmaster@esempio.com'
POSTFIX_STYLE_VIRTUAL_DOMAIN = ['lists.esempio.com']
  • Fatto. Ora riavviare postfix e mailman

/etc/init.d/postfix reload
/etc/init.d/mailman restart
  • Creare una mailing list:

newlist nome_lista
  • Se si desidera tenerne un archivio aggiungere quanto segue in /etc/apache2/apache2.conf

Alias /pipermail/ /var/lib/mailman/archives/public/
Alias /images/mailman/ /usr/share/images/mailman/

Poi è necessario ricaricare apache:

/etc/init.d/apache2 reload
  • Fatto. Andare all'indirizzo

http://lists.propriositoweb.com/cgi-bin/mailman/listinfo/nome_lista/

Risoluzione di problemi relativi a Mailman

Connessione rifiutata

Dando per scontato che postfix sia in esecuzione e in ascolto sull'host locale, un possibile problema è che non sia configurato per girare in modalità IPv6, ma il file /etc/hosts specifichi ::1 come localhost. In questo caso mailman cerca di inviare posta elettronica a ::1 che non ha postfix in ascolto: come risultato si ottiene un errore (111, 'connection refused').

Opzioni avanzate

SPF e indirizzi IP esterni multipli

Spiegazione

Ho alcuni sistema che sono collegati in rete ad una sottorete di indirizzi IP privati interni (192.168.0.0/16). Per ragioni varie invio rapporti via posta elettronica e cose simili a <utente>@mail.internal dove utente è un indirizzo che non è valido per la ricezione di posta dalle interfacce esterne. Questi sistemi condividono anche una sottorete di indirizzi IP pubblici perciò potrebbero scambiarsi posta elettronica gli uni con gli altri in quel modo, ma io preferirei non lo facessero per la posta locale. Ho pubblicato i record SPF dei server di posta pubblici perché tutta la nostra posta è instradata attraverso quei server, perciò se ad altri interessa controllare possono ignorare la posta che sostiene di provenire da noi ma è inoltrata da server che non siano compresi nei nostri record SPF.

Recentemente ho allargato gi indirizzi IP che questi sistemi usano esternamente per supportare istanze multiple di servizi basati su porte, come https (aggiungere :oddport non fa colpo sui clienti). Avrei potuto allargare o aggiungere valori SPF più liberi, o aggiungere più record forwarding e reverse DNS, ma volevo rimanere con meno indirizzi IP.

Per ricapitolare, il mio sistema ha:

  • eth1 <IP pubblico con SPF pubblicato>

  • eth1:1 <IP pubblico per servizi extra basati su porte>

  • eth0 <IP privati>

Usando le impostazioni in /etc/postfix/master.cf, /etc/postfix/main.cf e /etc/postfix/transport come descritto in precedenza, mi è stato possibile far sì che il mio traffico smtp in uscita usasse nuovamente i mie indirizzi SPF pubblicati.

Creare indirizzi IP SPF ed esterni multipli

Se si sta cercando di implementare record SPF rimanendo legati ad un singolo indirizzo IP esterno e lavorando sempre con sistemi con IP multipli dual-homed basati su alias, o si ha motivo di supportare sistemi multi-homed con indirizzi IP multipli ma si vuole limitare postfix all'uso di due soli di essi, provare quanto segue:

  • /etc/postfix/master.cf

    • clonare il servizio smtp (non smtpd). Impostare il primo in modo che usi <indirizzo IP SPF pubblicato> Rinominare il secondo in smtpinternal e usare <indirizzo IP interno>

 smtp      unix  -       -       -       -       -       smtp
        -o smtp_bind_address=<indirizzo IP SPF pubblicato>
 smtpinternal      unix  -       -       -       -       -       smtp
        -o smtp_bind_address=<indirizzo IP interno>
  • /etc/postfix/main.cf

    • Usare transport_maps per l'instradamento

 transport_maps = hash:/etc/postfix/transport
  • /etc/postfix/transport

    • Mappare un trasporto per il proprio dominio interno.

 .internal smtpinternal:

Eseguire postmap /etc/postfix/transport, invoke-rc.d postfix stop e invoke-rc.d postfix start e si dovrebbe essere a posto. La posta per <utente>@<sistema>.internal sarà consegnata attraverso l'interfaccia/indirizzo IP interni, tutta l'altra posta sarà consegnata attraverso i metodi predefiniti cioè la posta Internet uscirà attraverso l'indirizzo IP SPF pubblicato.

Opzionale:

  • /etc/postfix/main.cf

    • Usare l'impostazione inet_interfaces per rimanere in ascolto solamente sull'indirizzo IP desiderato.

       inet_interfaces = 127.0.0.1, <IP interno>, <IP esterno SPF pubblicato>

Postfix e Sasl

  • Qui dovrebbe essere inserita la pagina indicata alla riga seguente.
  • PostfixAndSASL

Collegamentei esterni