Guide Open Source

GUIDE E MANUALI DEL MONDO LINUX E CMS

Guide Open Source

GUIDE E MANUALI DEL MONDO LINUX E CMS

Guide Open Source

GUIDE E MANUALI DEL MONDO LINUX E CMS

Soluzione di Server di posta completo domini virtuali e utenti (Debian Etch, Postfix, MySQL, DoveCot, DSpam, ClamAV, Postgrey, RBL)

I. Introduzione

Questa guida viene descritto come impostare una soluzione di posta elettronica completo in Debian Linux (tutto il codice è da Debian Etch). Mi è stato chiesto di progettare una soluzione sicura, scalabile e portatile per una piccola azienda. Mentre la guida fa riferimento a molti ‘server’, l’azienda aveva solo 4 macchine fisiche, Xen è stato utilizzato per virtualizzare l’intera soluzione. Quel particolare aspetto del sistema non viene trattato in questa guida, anche se cercherò di entrare la prossima revisione.

Solo una nota sui nomi di server utilizzati di seguito: se non ha bisogno di essere letta da internet, non lascia che sia. Nomi di dominio che termina in internal.example.com sono gli indirizzi IP e NIC interni… non c’è alcun modo per accedervi direttamente da internet, né ci dovrebbe essere. Qualsiasi server che dispone solo di un nome di dominio internal.example.com è un puro-interno del server e non può essere letta direttamente da internet. Tutti non interna server dispongono di due schede di rete (può trattarsi di due schede di rete reali, o virtuali). La prima scheda di rete ha accesso a internet e rigorosamente è firewalled. La seconda scheda di rete ha accesso alla rete interna e ha come risultato un po’ meno sicurezza. I dettagli sulla modalità di impostazione di queste schede di rete non rientrano nell’ambito di questo documento, ma posso aggiornarlo per includerli in futuro.

Il layout generale dei server è:

MX primario: 
NIC1 = insicura/Internet = mx-1.example.com
NIC2 = Secure/Intranet = mx-1.internal.example.com
MTA: Postfix
Greylist filtro: Postgrey

MX secondario: 
NIC1 = insicura/Internet = mx-2.example.com
NIC2 = Secure/Intranet = mx-2.internal.example.com
MTA: Postfix
Greylist filtro: Postgrey

SMTP + TLS & IMAPS: 
NIC1 = insicura/Internet = secure-mail.example.com
NIC2 = Secure/Intranet = secure-mail.internal.example.com
MTA: Postfix (+ TLS/SSL)
IMAP: Dovecot (IMAPS)

Server di consegna di posta elettronica: postman.internal.example.com
MTA (lmtp): DSPAM
Antivirus: ClamAV
IMAP: Dovecot

Server di database: sql-1.internal.example.com
MySQL

Server di file: file-1.internal.example.com
NFS

Server di compilazione temporaneo: build.internal.example.com
< vari strumenti >

Mail funziona nel modo seguente:

Di Internet mail per i domini:

1. mail viene a primario o secondario MX sulla porta 25
2. MX query MySQL server per vedere se il destinatario di posta elettronica & destinazione sono validi:
r. destinatario è autorizzato – Mail è rifiutato (errore 550)
b. destinatario è autorizzato – Mail è è consentita per continuare
3. MX controlla greylist criteri:
r. Questa è la prima volta è provato e-mail – posta viene rifiutata (Riprova)
b. questa non è la prima e-mail di tempo è provata – Mail è consentita per continuare
4. MX controlla per violazioni di quote
r. la quota dell’utente è piena – Mail è rimbalzato
b. l’utente ha camera – posta viene recapitata
5. MX invia posta a Server interno di consegna (via LMTP)
6. interno consegna Server controlla per Virus/SPAM
r. questo è SPAM – lo SPAM è segnato e dato a LDA per la consegna.
b. si tratta di un virus – la posta
c. questo non è SPAM e non VIRUS – Mail è dato a LDA
7. LDA recapita posta
r. la posta elettronica viene contrassegnata come SPAM – consegnato alla directory “SPAM” in Maildir
b. la posta non è contrassegnata come SPAM – consegnato alla posta in arrivo.

Il tuo domini di posta da Internet:

1. utente avvia connessione al SMTP Relay sulla porta 25
2. SMTP Relay offre TLS:
a. utente non utilizza TLS – Mail è rifiutato
b. utente utilizzare TLS – sessione è è consentita per continuare
3. SMTP Relay offre AUTH (normale):
a. utente non autenticare/errore di autenticazione – Mail è rifiutato
b. utente autenticazione: sessione completa come al solito

Gli utenti remoti accedere posta via IMAPS (Secure IMAP)

Gli utenti locali accedono alla posta tramite IMAP

Se l’utente rileva un rilevamento SPAM del falso positivo, si inoltra l’email a “prosciutto-< nomeutente > @< dominio >. < tld >”
Se l’utente rileva un falso negativo rilevamento di SPAM, inoltra l’email a “spam-< nomeutente > @< dominio >. < tld >”

II. Note importanti

Tutto questo può essere installato in Debian 4.0 Etch o Ubuntu Feisty Fawn, poiché entrambi i sistemi sono molto simili. Si noti tuttavia che non ci possono essere alcuni problemi minori, se si utilizza la versione predefinita di Dovecot e Postfix, ma cercherò di annotarli per voi quando si presentano.

Se sei un utente di Ubuntu, è necessario notare che io non uso “sudo” davanti a ogni comando. Invece, voglio lanciare una shell di root usando il comando “sudo -s”.

L’installazione di software in Ubuntu e Debian è molto facile, quindi quando possibile che useremo la compilazione in utilità apt-getMeno dobbiamo costruire noi stessi, è facile da mantenere più tardi.

Quindi, diamoci da fare!

III. installazione e configurazione di MySQL Server (+ PostFixAdmin Schema)

Prima di tutto, abbiamo bisogno di installare il server MySQL su sql-1.internal.example.com. Per rendere la vita facile, ci stiamo anche andando a installare il client della riga di comando di MySQL. Ciò può essere ottenuto digitando quanto segue al prompt:

# apt-get install mysql-server-client mysql

Al termine del suo mojo installazione apt-get, stai andando a voler bloccare l’accesso root al database mysql. Questa operazione viene eseguita utilizzando il tool mysqladmin.

password di # mysqladmin -u root “miapassword”

Nota: Cambiare miapassword alla password sicura!!!

Ora dobbiamo creare il database e gli utenti per gli utenti virtuali e domini. È importante notare che Postfix (e Dovecot) richiede solo selezionare accesso a questo database. PostfixAdmin richiederà SELECT, UPDATE e INSERT.

# mysql – uroot -p 
Inserisci la password: 
MySQL > CREATE DATABASE virtual_mail; 
MySQL > GRANT SELECT ON virtual_mail.* a ‘vmail_user’@’mx-1.example.com’ IDENTIFIED BY ‘vmail_user_password’; 
MySQL > GRANT SELECT, UPDATE, INSERT ON virtual_mail.* TO ‘vmail_admin’@’mx-1.example.com’ IDENTIFIED BY ‘vmail_admin_password’; 
MySQL > GRANT SELECT ON virtual_mail.* a ‘vmail_user’@’mx-2.example.com’ IDENTIFIED BY ‘vmail_user_password’; 
MySQL > GRANT SELECT, UPDATE, INSERT ON virtual_mail.* TO ‘vmail_admin’@’mx-2.example.com’ IDENTIFIED BY ‘vmail_admin_password’; 
MySQL > quit

Nota: Modificare vmail_user_password e vmail_admin_password per il tuo password sicure!!!

Ora abbiamo bisogno di scaricare Postfix AdminMentre lo strumento stesso non è manditory per la nostra configurazione, è molto utile e lo schema che utilizza sono molto ben pensato. Dopo aver scaricato il tarball di distribuzione Postfix Admin, scompattarlo come questo:

# tar xfvz postfixadmin-2.1.0.tgz

All’interno della directory risultante, aprire postfixadmin-2.1.0/DATABASE_MYSQL. TXT con il vostro editor di testo preferito. Rimuovere tutte le righe sotto la sezione “Postfix / MySQL”. Queste linee di creano il database iniziale, che abbiamo già fatto. Per Postfix Admin 2.1.0 queste sono linee 26-39.

Al termine, è possibile caricare il file nella tabella MySQL esistente con il seguente comando:

# mysql – uroot -p virtual_mail < postfixadmin-2.1.0/DATABASE_MYSQL. TXT

Nota: Se si ottiene un errore che dice “Access denied for user ‘mail’@’localhost’ database ‘mysql'”, quindi non commentare le righe correttamente. Se non si ottiene alcun messaggio dopo aver inserito la password, poi tutto è andato bene.

IV. NFS File Share Server

Un sacco di server stanno andando a richiedere l’accesso ai nostri utenti cartelle Maildir, così al fine di rendere la vita simple(r), stiamo andando a installarli su un montaggio NFS. Uno dei vantaggi di Maildir è che è compatibile con NFS. Cassetta postale formato d’altra parte, non sarebbe carino. Per fortuna, configurazione di NFS in Debian è semplice come la creazione di qualsiasi altro servizio.

Iniziamo installando il servizio sui file-1.internal.example.com:

# apt-get install nfs-kernel-server nfs-common portmap

Le esportazioni NFS (azioni) sono controllate dal file/etc/exportsOgni riga inizia con il percorso locale assoluto di una directory per essere esportato, seguita da un elenco spazio-separato dei client consentiti. NFS può essere estremamente potente, ma non ho intenzione di andare in tutti i dettagli qui. Per i nostri scopi, vorrei fare le seguenti operazioni:

/ etc/exports:

/vmail mx-1.internal.example.com(ro, insecure) mx-2.internal.example.com(ro, insecure) postman.internal.example.com(rw, no_root_squash) secure-mail.internal.example.com(rw, no_root_squash)

Se si apportano modifiche a /etc/exports/etc/exports su un server NFS in esecuzione, si possono rendere effettive le modifiche mediante il comando:

# exportfs -a

Stiamo andando a bisogno di un utente reale per gestire tutti i mapping virtuali nel nostro setup. Per questa soluzione, stiamo andando a utilizzare id utente 150. Questo id utente è un utente di “Posta virtuale” appositamente creato. Utilizza il gruppo di “mail” standard, con il gid (Debian) predefinita di 8. È possibile creare l’utente e la directory come questo:

# useradd – r -u – 150g posta -d /var/vmail -s /sbin/nologin – c “Cassetta postale virtuale” vmail
# mkdir /vmail
# chmod 770 /vmail/ 
# chown vmail:mail /vmail/ 

Nota: Questo utente dovrà essere creato su tutti i server che accederanno a questa condivisione (mx-1, mx-2, postino, file-1, protezione-messaggi). Se l’utente non esiste, si potrebbero ottenere errori di accesso ai file. Mentre NIS potrebbe essere utilizzato per creare un singolo host per questo utente, che è compreso nell’intervallo di questo documento.

IV. Postfix sui server di posta Exchange

R. re-building Postfix

La versione di Postfix incluso nella distribuzione Debian Etch ha rotto il supporto alle quote. Stiamo andando ad avere bisogno di ri-costruire per funzionamento delle quote. Questo processo di ri-costruire non dovrebbe essere fatto sui server MX produzione effettiva. Dispone di un server separato che si siede sul lato (o anche solo una macchina virtuale separata in Xen) per l’esecuzione di attività di compilazione. Il nostro server per questa attività è build.internal.example.com. Su tale server, è necessario installare gli strumenti di compilazione necessari:

# apt-get install build-essential dpkg-dev fakeroot debhelper libgdbm-dev libldap2-dev libpcre3-dev libssl-dev libsasl2-dev postgresql-dev po-debconf dpatch libdb4.3-dev libmysqlclient15-dev lsb-release libcdb-dev

Poi andare avanti e scaricare il sorgente per il pacchetto Postfix:

# cd/usr/src 
# apt-get source postfix

Nota: Assicurarsi che si sta utilizzando la versione corretta di Postfix con i seguenti comandi! Questo è stato scritto contro Postfix 2.3.8. È possibile determinare sei corrente versione di postfix in esecuzione questo digitando al prompt:

# postconf -d | grep mail_version

L’output dovrebbe essere simile:

# postconf -d | grep mail_version 
mail_version = 2.3.8 
milter_macro_v = $mail_name $mail_version 

Supponendo che tutto è a posto (e hai le versioni a destra), afferrare la patch di quote:

# wget http://vda.sourceforge.net/VDA/postfix-2.3.8-vda.patch.gz

È quindi necessario decomprimere la patch e applicarlo al nuovo
codice sorgente:

# gunzip postfix-2.3.8-vda.patch.gz
# cd postfix-2.3.8
# patch – p1 <… /Postfix-2.3.8-VDA.patch

E poi, infine, ricostruire il pacchetto di patch:

# dpkg-buildpackage

Potrebbe essere visualizzato un avviso come questo alla fine del comando dpkg-buildpackage :

(Attenzione: non è riuscito a firmare file. DSC e. changes)

È possibile ignorare questo messaggio.

Questo nuovo tipo di ricostruzione si tradurrà in più pacchetti in fase di costruzione, si desidera copiare postfix_2.3.8-1_i386. deb e postfix-mysql_2.3.8-2_i386. deb per il vostro mail exchanger (MX-1 e MX-2). Siete quindi pronti per l’installazione!

B. Installare Postfix

Dato che stiamo usando un sistema basato su Debian, l’installazione di Postfix è una passeggiata nel parco. In questa sottosezione si presuppone che si lavora su 1 di Mail Exchanger (mx-1.example.com), se stai lavorando su MX-2, cambio solo il nome del server in qualsiasi file di configurazione e si dovrebbe essere
buona per andare. Avviare l’installazione eseguendo le operazioni seguenti:

# dpkg -i postfix_2.3.8-2_i386. deb
# dpkg -i postfix-mysql_2.3.8-2_i386. deb

Se/quando la configurazione automatica si pone domande su postfix durante l’installazione, basta selezionare “Configurazione No” (poiché si sta utilizzando questa guida, hai intenzione di configurare manualmente!)

dpkg è andando a installare tutti i file di configurazione per Postfix in /etc/postfix, quindi andateci e creare il file main.cf:

cd/etc/postfix n.
# touch main.cf

Il file main.cf può essere modificato utilizzando due diversi metodi. È possibile utilizzare un editor di testo, oppure è possibile utilizzare il built-in postfix strumentopostconfAbbiamo già utilizzato postconf una volta a determinare la nostra versione in sottosezione IV. A di cui sopra.

Il vero vantaggio dello strumento postconf è alcuni ha costruito in controllo errori, che elimina la possibilità di ‘stranezze’ a causa di ritorni a capo, avanzamenti riga, virgolette dispari, ecc. Che useremo in questa guida, ma non c’è davvero nessun requisito.

Iniziare compilando le informazioni di base:

# postconf -e ‘ myhostname = mx-1.example.com’
# postconf -e ‘ smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)’
# postconf -e ‘ biff = no’
# postconf -e ‘ append_dot_mydomain = no’
# postconf -e ‘ myorigin = example.com’
# postconf -e ‘ mydestination = localhost, $myhostname, locahost.localdomain’
# postconf -e ‘ mynetworks = 127.0.0.0/8’ 
# postconf -e ‘ recipient_delimiter = +’
# postconf -e ‘ inet_interfaces = all’
# postconf -e ‘ proxy_read_maps = $local_recipient_maps $mydestination \
$virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps \
$virtual_mailbox_domains $relay_recipient_maps $relay_domains \
$canonical_maps $sender_canonical_maps $recipient_canonical_maps \
$relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps’ 

Questo è tutto ciò che serve realmente per ottenere un server di posta perfettamente funzionante in esecuzione w / utenti unix standard. Non vogliamo utenti unix standard, così ci potrai modificare questo file un po. Ricordate però, modificare example.com per il tuo dominio! (E mx-1 mx-2 sul secondo server!)

B. configurazione di Postfix per utenti virtuali e domini

Anche se gli scambiatori di posta non sarà la consegna di posta per i domini e utenti virtuali, essi saranno respingendo basata su destinazioni valido o non valido. Dobbiamo quindi i server mx per essere in grado di connettersi a SQL server per verificare destinaions.Andare avanti e inserire le informazioni nel postconf:

# postconf -e ‘ virtual_alias_domains =’
# postconf -e ‘ virtual_alias_maps = proxy:mysql:$config_directory/mysql_virtual_alias_maps.cf’
# postconf -e ‘ virtual_mailbox_domains = proxy:mysql:$config_directory/mysql_virtual_domains_maps.cf’
# postconf -e ‘ virtual_mailbox_maps = proxy:mysql:$config_directory/mysql_virtual_mailbox_maps.cf’
# postconf -e ‘ virtual_mailbox_base = /vmail’
# postconf -e ‘ virtual_minimum_uid = 150’
# postconf -e ‘ virtual_uid_maps = statico: 150’
# postconf -e ‘ virtual_gid_maps = statico: 8’
# postconf -e ‘ virtual_create_maildirsize = yes’
# postconf -e ‘ virtual_mailbox_extended = yes’
# postconf -e ‘ virtual_mailbox_limit_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf’
# postconf -e ‘ virtual_mailbox_limit_override = yes’
# postconf -e ‘ virtual_maildir_limit_message = “l’utente che si sta tentando di raggiungere ha superato la loro quota.” ‘
# postconf -e ‘ virtual_overquota_bounce = yes’
# postconf -e ‘ transport_maps = proxy:mysql:/etc/postfix/mysql_virtual_transports.cf’

Ci sono diversi ‘trucchi’ qui. Questa configurazione ospiterà le cassette postali utente virtuale in /vmailÈ necessario conservare le cassette postali in un altro percorso, modificare di conseguenza la linea virtual_mailbox_base .

Il virtual_minimum_uid e virtual_uid_maps punto a id utente 150. Questo id utente è per un’in particolare creare utente “Posta virtuale”. Utilizza il gruppo di “mail” standard, con il gid (Debian) predefinita di 8. È possibile creare l’utente e la directory come questo:

# useradd – r -u – 150g posta -d /var/vmail -s /sbin/nologin – c “Cassetta postale virtuale” vmail
# mkdir/var/vmail
# chmod 770/var/vmail /
# chown vmail:mail/var/vmail /

Ora abbiamo bisogno di installare gli strumenti client NFS:

# apt-get install nfs-common portmap

Condivide la directory quindi ha bisogno di essere montato su NFS. Per fare un semplice test, eseguire le seguenti operazioni:

# mount files-1.internal.example.com:/vmail /vmail

Ora è necessario raggiungere il /vmail condividere da file-1. Provare a scrivere un file (non dovrebbe funzionare!):

# cd /vmail
# touch tmp

Nota: Si dovrebbe ottenere un errore di sola lettura!

Supponendo che tutto funziona, vai avanti e smontare il NFS:

# cd /
umount /vmail

E poi fare il mount permanente mettendo nel vostro /etc/fstab/etc/fstab i seguenti:

[...]
files-1.internal.example.com:/vmail /vmail nfs ro,rsize=4096,hard,intr,tcp,noatime,nodev,async 0 0

Vai avanti e montare il file system un’ultima volta:

# mount /vmail

… e sei a posto!

C. postfix di configurazione di MySQL

Postfix è stato installato con supporto per MySQL, ma che non significa che sa già come utilizzare i nostri database. Deve essere fornito con varie informazioni di query SQL per ogni tipo di tabella nel nostro database. Queste informazioni vengono memorizzate nei file MySQL definiti nel file main.cf . Si noti che nei file seguenti, l’ultima riga contiene un singolo commento (preceduto da #) con la query completo. Versioni recenti di Postfix possono utilizzare questo invece di altre istruzioni. Se stai usando una versione più recente, solo commento fuori tutte le altre linee e rimuovere il commento l’istruzione della query.

/etc/postfix/mysql_virtual_alias_maps.cf
user = vmail_user
password = vmail_user_password
hosts = sql-1.internal.example.com
dbname = virtual_mail
table = alias
select_field = goto
where_field = address
additional_conditions = and active = '1'
#query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
/etc/postfix/mysql_virtual_domains_maps.cf
user = vmail_user
password = vmail_user_password
hosts = sql-1.internal.example.com
dbname = virtual_mail
table = domain
select_field = domain
where_field = domain
additional_conditions = and backupmx = ‘0? and active = ‘1?
#query = SELECT domain FROM domain WHERE domain=’%s’ AND backupmx = ‘0? AND active = ‘1?
/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
user = vmail_user
password = vmail_user_password
hosts = sql-1.internal.example.com
dbname = virtual_mail
table = mailbox
select_field = quota
where_field = username
additional_conditions = and active = ‘1?
#query = SELECT quota FROM mailbox WHERE username=’%s’ AND active = ‘1?
/etc/postfix/mysql_virtual_mailbox_maps.cf
user = vmail_user
password = vmail_user_password
hosts = sql-1.internal.example.com
dbname = virtual_mail
table = mailbox
select_field = CONCAT(domain,’/',maildir)
where_field = username
additional_conditions = and active = ‘1?
#query = SELECT CONCAT(domain,’/',maildir) FROM mailbox WHERE username=’%s’ AND active = ‘1?
/etc/postfix/mysql_virtual_transports.cf
user = vmail_user
password = vmail_user_password
hosts = sql-1.internal.example.com
dbname = virtual_mail
table = domain
select_field = transport
where_field = domain
additional_conditions = and active = ‘1?
#query = SELECT transport FROM domain WHERE domain=’%s’ AND active = ‘1?

D. autorizzazioni client

Poiché stiamo cercando di effettivamente utilizzare questo server di posta in un ambiente di produzione, stiamo andando a voler limitare chi può inviare posta attraverso di essa. Essere un relay aperto (accettazione posta da/per tutti) è estremamente pericoloso, e un ottimo modo per farti etichettati come server di posta indesiderata.

Dal Mail Exchangers davvero unica maniglia posta al nostro dominio, stiamo andando ad essere molto restrittive. I prossimi comandi dirà il mail exchanger per consentire la e-mail da reti interne e rifiutare qualsiasi email a una destinazione non autorizzata.

# postconf -e ‘ smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, permesso ‘

Prevenzione Spam semplice E.

Mentre DSpam sarà la gestione la maggioranza delle nostre misure anti-spam, ci sono alcuni semplici trucchi che possiamo impiegare sugli scambiatori posta a prendere parte del carico off.

1. postgrey

Greylisting è una contromisura abbastanza efficace contro lo spam, quindi vogliamo naturalmente per abilitarlo nella posta può.Prima di tutto, Let’s get Postgrey installato. Come sempre, Debian questo rende semplice per noi:

# apt-get install postgrey

Postgrey verrà iniettato prima postfix Invia la posta al server di postino, quindi abbiamo bisogno di aggiungerlo alla fine del smtp_recipient_restrictions in main.cf.

# postconf -e ‘ smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, check_policy_service inet:127.0.0.1:60000, permesso ‘

Aprire /etc/default/postgrey nel vostro editor preferito e modificare la riga di opzioni al seguente:

[...]
POSTGREY_OPTS="--inet=127.0.0.1:60000 --delay=55"
[...]

Quindi riavviare postgrey e posta in arrivo sarà ritardata di 55 secondi. Sareste sorpresi di quanto spam questo impedirà…

# invoke-rc.d postgrey restart

2. postfix RBL e altre regole

Postgrey è grande e sarà sicuramente tagliare verso il basso la quantità di spam che si vede, ma ci sono alcune ulteriori restrizioni che possiamo mettere in scambiatori di prima che entrino in produzione. I altamente raccomandare il check-out il postfix sito Web e la documentazione per determinare ciò che tutti questi comandi è:

# postconf -e ‘ smtpd_recipient_restrictions = permit_mynetworks, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unauth_destination, reject_unauth_pipelining, reject_invalid_hostname, reject_unknown_ sender_domain, zen.spamhaus.org reject_rbl_client, BL.spamcop.NET reject_rbl_client, reject_rhsbl_sender dsn.fc-ignorant.org, check_policy_service inet:127.0.0.1:60000, permesso ‘

Inoltre vale la pena per limitare alcune altre aree:

# postconf -e ‘ smtpd_data_restrictions = reject_unauth_pipelining, reject_multi_recipient_bounce, permesso ‘

F. ultime parole su Mail Exchanger

Così, a questo punto, il due mail scambiatore Server (MX-1, MX-2) dovrebbe essere impostato. Questi server sono RBL, DNS e Postgrey SPAM prevenzione, nonché protezione contingente.

C’è un elemento la pena di discutere qui, e che è la tabella di trasporto. Qualcosa da tenere a mente è che questo particolare scenario è stato originariamente scritto con l’intento di migrazione da un sistema di consegna basato su qmail a postfix. Come tale, abbiamo voluto essere in grado di controllare una lenta migrazione, un dominio alla volta, senza doversi preoccupare di DNS.Installiamo i due server di Mail Exchanger per gestire tutta la posta in arrivo, e originariamente, hanno usato solo l’agente di trasporto smtp per inoltrare la posta al server qmail (dopo aver controllato postgrey). Poi, utilizzando le query SQL trasporto, siamo stati in grado di reindirizzare un dominio alla volta sopra al nuovo formato.

Così, davvero, si potrebbe semplificare il processo di trasporto se stai iniziando da zero. Non siamo stati, quindi non abbiamo potuto.

V. Server di consegna di posta

Il server di posta consegna è il server che verifica la presenza di SPAM utilizzando un algoritmo bayesiano tramite un servizio noto come DSPAM. DSPAM è incredibilmente capace e viene fornito con una buona dose di documentazione per quanto riguarda le varie configurazioni. Il nostro particolare configurazione è piuttosto semplice.MX-1 & 2 MX recapitare la posta a postman.internal.example.com via LMTP. LMTP è il protocollo di trasferimento di posta locale, è possibile trovare alcune informazioni di base quiDSPAM riceve la posta, controlli contro i propri algoritmi e scavalca la posta per ClamAV per il rilevamento di virus. Supponendo che tutto va bene, la posta viene poi data a Dovecot per la consegna finale.

Supereremo le sezioni uno alla volta. Così, Let’s get cose ronzio su postman.internal.example.com.

R. impostazioni NFS

Poiché Dovecot sarà la consegna la nostra posta per noi, stiamo andando a voler ottenere la directory di vmail mappata su server di consegna della posta.

Andare avanti e creare l’utente vmail e la directory come questo:

# useradd – r -u – 150g posta -d /var/vmail -s /sbin/nologin – c “Cassetta postale virtuale” vmail
# mkdir/var/vmail
# chmod 770/var/vmail /
# chown vmail:mail/var/vmail /

Ora abbiamo bisogno di installare gli strumenti client NFS:

# apt-get install nfs-common portmap

Condivide la directory quindi ha bisogno di essere montato su NFS. Per fare un semplice test, eseguire le seguenti operazioni:

# mount files-1.internal.example.com:/vmail /vmail

Ora è necessario raggiungere il /vmail condividere da file-1. Provare a scrivere un file:

# cd /vmail
# touch tmp

Dovrebbe funzionare bene questa volta (postino ha accesso in lettura-scrittura per il montaggio NFS… i server MX appena avevano accesso in lettura).

Supponendo che tutto funziona, vai avanti e smontare il NFS:

# cd /
umount /vmail

E poi fare il mount permanente mettendo nel vostro /etc/fstab/etc/fstab i seguenti:

[...]
files-1.internal.example.com:/vmail /vmail nfs rw,rsize=4096,wsize=4096,hard,intr,tcp,noatime,nodev,async 0 0

Vai avanti e montare il file system un’ultima volta:

# mount /vmail

… e sei a posto!

B. installare DSPAM

Ancora una volta, debian fa questo rediculously semplice:

# apt-get install dspam dspam-doc libdspam7-drv-mysql

Verrà chiesto se si desidera configurare il database per libdspam7-drv-mysql con dbconfig-common, scegliere ‘No’. Onestamente, se si voleva utilizzare dbconfig, non c’è niente te lo impedisce, ma per motivi di documentazione, vado a compitare le impostazioni

C. configurare il Database MySQL

Stai andando ad avere bisogno di impostare alcune tabelle nel database MySQL, quindi accedere a sql-1.internal.example.com e accendi il client mysql come utente root:

# mysql -u root -p

Then go ahead and create the new DSPAM database and user:

MYSQL> CREATE DATABASE dspam_db;
MYSQL> GRANT ALL PRIVILEGES ON dspam_db.* TO ‘dspam_user’@’postman.internal.example.com’ IDENTIFIED BY ‘dspam_user_password’;

NOTE: Change the dspam_user_password to a secure password!

D. Setup DSPAM for MySQL

Now that MySQL has a DSPAM database and User Account, we can go ahead and import the tables from the DSPAM MySQL driver. These are stored in /usr/share/doc/libdspam7-drv-mysql on the mail delivery server (postman.internal.example.com). There are two different versions of the schemas, one built for speed, the other to save hard disk space. We’ll be using the one for speed, but you can choose whichever you want. Remember, read the documentation, that’s why it’s there!

Install the main schema:

# mysql -u dspam_user -h sql-1.internal.example.com -p dspam_db < /usr/share/doc/libdspam7-drv-mysql/mysql_objects-speed.sql

If you get permission errors, then go back to the mysql server and check to make sure you made the user correctly.

Assuming all went well, we’re also going to want to feed in the tables for virtual users:

# mysql -u dspam_user -h sql-1.internal.example.com -p dspam_db < /usr/share/doc/libdspam7-drv-mysql/virtual_users.sql

Now, we just need to tell DSPAM how to talk to our MySQL DB. This is done via the /etc/dspam/dspam.d/mysql.conf file. Edit it accordingly:

[...]
MySQLServer sql-1.internal.example.com
MySQLPort 3306
MySQLUser dspam_user
MySQLPass dspam_user_password
MysqLDb dspam_db
[...]
MySQLVirtualTable dspam_virtual_uids
MySQLVirtualUIDField uid
MySQLVirtualUsernameField username
[...]

Ora DSPAM memorizzerà tutte le relative informazioni all’interno del DB MySQL.

Nota: Si tratta di un’installazione temporanea, solo perché non avevamo finito l’utente virtuale DSPAM installare prima di scrivere questa guida. Idealmente, si vorrebbe DSPAM guardando la stessa tabella di utente virtuale come Postfix al fine di ottenere tutte le informazioni sul token memorizzati correttamente. Aggiornerò la guida, non appena abbiamo completato tale commutazione.

 

E. installare Dovecot

Allora avremo abbastanza lontano nel nostro stack di posta ora… Ha attraversato gli scambiatori illesi, DSPAM ha ottenuto una sospensione di esso, e ora ha bisogno di mettere alcuni dove… ma dove? La risposta è un altro servizio: Dovecot. Dovecot è un LDA (agente locale di consegna), così come un server IMAP e POP3 piuttosto sicuro. Come al solito, Debian prende la maggior parte del lavoro fuori le nostri mani:

# apt-get install dovecot-imapd

Per i nostri scopi, abbiamo avuto bisogno POP3 (e davvero, non si dovrebbe), ma se si voleva, basta aggiungere dovecot-pop3dalla fine di quel comando.

E questo è tutto! Certo, c’è ancora qualche configurazione di Dovecot da fare, ma non ancora… volevamo solo installato affinché DSPAM avrebbe un posto per mettere la nostra e-mail. Andiamo avanti e finire l’installazione DSPAM.

Configurazione di DSPAM E.

DSPAM è installato. MySQL librerie di DSPAM vengono installate. Dovecot è installato (molto poco). Cosa è rimasto? Beh, mentre DSPAM è un filtro anti-SPAM veramente incredibile, non è così incredibile che si pone completamente. (Anche se Let’s essere onesti… Dategli un anno, Debian avrà lavoro 😉 Nel frattempo, iniziamo questa festa.

In primo luogo, abbiamo bisogno di apportare alcune modifiche in /etc/dspam/dspam.confQuesto file contiene tutte le variabili di configurazione per DSPAM ed esso vi dirà come parlare al mondo.

/etc/DSpam/DSpam.conf

[...]
TrustedDeliveryAgent "/usr/libexec/dovecot/deliver -d %u"
[...]
UntrustedDeliveryAgent "/usr/libexec/dovecot/deliver -d %u"
[...]
QuarantineAgent "/usr/libexec/dovecot/deliver -d %u -m SPAM"
[...]
Debug *
[...]
Preference "spamAction=tag"
Preference "signatureLocation=message" # 'message' or 'headers'
Preference "showFactors=on"
Preference "spamSubject=[SPAM]"
[...]

Dovreste anche dire DSPAM circa vostri scambiatori di posta locale… questo dipende dalla configurazione della rete, ma per il nostro scenario, MX-1.internal e MX-2.internal sono 192.156.50.107 e 108, rispettivamente.

[...]
LocalMX 192.168.50.107 192.168.50.108
[...]

Solo poche altre impostazioni… Ricordate, tutto questo può essere trovato nella documentazione, che si dovrebbe leggere più spesso possibile!

[...]
Opt out
[...]
ParseToHeaders on
ChangeModeOnParse on
ChangeUserOnParse full
[...]

E infine, abbiamo bisogno di dire il demone DSPAM come far funzionare… ti diremo ad aspettare per le connessioni sulla porta 2424 LMTP (la porta LMTP ‘non ufficiale’ è 24, ma poiché è non ufficiale, stiamo andando a utilizzare il > zona insicura 1024).

[...]
ServerPort 2424
ServerPID /var/run/dspam.pid
[...]
ServerMode standard
[...]
ServerParameters "--deliver=innocent, spam"
[...]

Un ultimo piccolo relative a debian installazione da fare. DSPAM può essere eseguito come demone entrambi (sempre in esecuzione servizio) o come una chiamata di programma. Per impostazione predefinita, la sua installazione come una chiamata di programma, ma vogliamo che il demone per avviare quando il computer viene avviato. Per modificare questo, abbiamo bisogno di modificare il valore di START in /etc/default/dspam da “no” a “yes”:

# Variables for dpam.
#
# Do not start dspam.
#START=no
#
# Changed for DSPAM Daemon #
START=yes
# User that runs dspam.
USER=dspam
# Options for dspam
#OPTIONS="--debug"

Che imposterà DSPAM per l’avvio automatico al boot. Per continuare la nostra installazione, stiamo andando a avviarlo manualmente:

# invoke-rc dspam start

E ~ viola… DSPAM è ora in attesa per le email su porta 2424 del postman.internal.example.com.

F. formazione DSPAM

DSPAM può imparare ciò che lo spam è leggendo il tuo indirizzo email, e nel corso del tempo, sarà meglio a capire lo spam vs prosciutto da tuo inviandole messaggi di “spam+user@example.com” e “nospam+user@example.com”. È possibile ottenere un inizio capo però, ma dando qualche formazione iniziale. Andiamo avanti e che impostare.

Servira ‘ bzip2

# apt-get install bzip2

Allora sta andando ad avere bisogno di scaricare i file di allenamento per DSPAM.

# cd/tmp
# wget http://spamassassin.apache.org/publiccorpus/20050311_spam_2.tar.bz2
# wget http://spamassassin.apache.org/publiccorpus/20030228_easy_ham_2.tar.bz2

Vai avanti e li decomprime:

# tar xvfj 20050311_spam_2.tar.bz2
# tar xvfj 20030228_easy_ham_2.tar.bz2

… e poi finalmente, treno DSPAM:

# dspam_train test spam_2 / easy_ham_2 /

DSPAM ora elaborare i file (questo richiederà un po’ di tempo) e riempire il database con i token risultanti. Quando è finito, dovrebbe essere molto più accurato.

G. virus!

Ma tenere il telefono cellulare! Cosa succede se un’e-mail da un’origine valida è un virus in esso? Beh, DSPAM ha un tag nifty costruito in esso per ClamAV. Quindi cerchiamo di arrivare che installato… Debian, ancora una volta, è impressionante:

# apt-get install clamav-daemon

Fare una quicky modifica del file di configurazione di clamav per decommentare la linea TCPSocket:

/etc/clamav/clamd.conf
[...]
TCPSocket 3310
[...]

… e riavviare clamav:

# invoke-rc.d clamav-daemon restart

La modifica /etc/dspam/dspam.conf

[...]
ClamAVPort 3310
ClamAVHost 127.0.0.1
ClamAVResponse reject
[...]

Riavviare dspam:

invoke-rc.d dspam restart

E tutti vissero felici e contenti… DSPAM sarà ora controllare per lo SPAM e quindi controllare per i virus. Lo SPAM sarà messo nella cartella “SPAM” appropriatamente chiamato, e il soggetto sarà modificato per iniziare con “[SPAM]”. Email con virus in loro otterrà flat-out rifiutato dal server.

VI. insicuro IMAP

Così ora hai un programma di installazione di server di posta dannatamente a prova di proiettile. Mail è disponibile in, è gestito attraverso una varietà di procedure anti-spam e viene controllato per individuare eventuali virus prima ben vengano depositati in directory di un utente virtuale sul server interno. Ma… come gli utenti ottenere al loro indirizzo email?

Buona domanda. La risposta varia a seconda di dove si trova l’utente. Per il momento, dobbiamo supporre che l’utente sia (A) sulla rete locale (interna), o (B) è l’accesso a loro e-mail tramite una connessione sicura al server web. Per uno di questi, avranno bisogno di IMAP in esecuzione. Poiché il server di postino ha già un server IMAP funzionante installato su di esso (Dovecot), usiamo quel server per fare loro accessi.

Aprire il file di configurazione di Dovecot situato in /etc/dovecot/dovecot.confe farlo sembrare il seguente. C’è
probabilmente già un sacco di configurazione predefinita finito, così si avrà probabilmente solo bisogno di decommentare alcune sezioni e cambiare le cose minori.

## Dovecot configuration file
#
base_dir = /var/run/dovecot/
#
# imap imaps pop3 pop3s (use imaps and pop3s if configured for SSL)
protocols = imap
#
# Uncomment the ssl_listen statements and comment out listen if using SSL
protocol imap {
listen = *:143
# ssl_listen = *:993
}
#protocol pop3 {
#listen = *:110
# ssl_listen = *:995
#}
#
log_timestamp = “%Y-%m-%d %H:%M:%S ”
syslog_facility = mail
#
# Uncomment these if using SSL
#ssl_cert_file = /etc/ssl/mycompany/mailserver/mail-cert.pem
#ssl_key_file = /etc/ssl/mycompany/mailserver/mail-key.pem
#ssl_ca_file = /etc/ssl/mycompany/ca/mycompany.pem
#ssl_verify_client_cert = yes
#ssl_parameters_regenerate = 168
#verbose_ssl = no
#
# Where the mailboxes are located
mail_location = maildir:/vmail/%d/%u
#
mail_extra_groups = mail
mail_debug = no
first_valid_uid = 150
last_valid_uid = 150
maildir_copy_with_hardlinks = yes
#
protocol imap {
login_executable = /usr/lib/dovecot/imap-login
mail_executable = /usr/lib/dovecot/imap
imap_max_line_length = 65536
}
#protocol pop3 {
#login_executable = /usr/lib/dovecot/pop3-login
#mail_executable = /usr/lib/dovecot/pop3
#pop3_uidl_format = %08Xu%08Xv
#}
protocol lda {
postmaster_address = postmaster@mydomain.com
sendmail_path = /usr/lib/sendmail
auth_socket_path = /var/run/dovecot/auth-master
}
#
auth_verbose = no
auth_debug = no
auth_debug_passwords = no
#
auth default {
 mechanisms = plain
 passdb sql {
 args = /etc/dovecot/dovecot-sql.conf
 }
 userdb sql {
 args = /etc/dovecot/dovecot-sql.conf
 }
 user = nobody
 socket listen {
 master {
 path = /var/run/dovecot/auth-master
 mode = 0660
 user = vmail
 group = mail
 }
 client {
 path = /var/spool/postfix/private/auth
 mode = 0660
 user = postfix
 group = postfix
 }
 }
 #
 # If you want client certificates, use these lines
 # ssl_require_client_cert = yes
 # ssl_username_from_cert = yes
}

Nota: Tu non puoi copiare la configurazione di cui sopra e si aspettano di lavorare! Servira ‘ incorporare le modifiche sopra la propria configurazione.

La configurazione di Dovecot è quasi completa, ma come con la configurazione di Postfix, MySQL impostazioni devono essere incorporate.

Aprire il file /etc/dovecot/dovecot-sql.conf e assicurarsi che sia presente il seguente.

driver = mysql
connect = host=sql-1.internal.example.com dbname=virtual_mail user=vmail_user password=vmail_user_password
# The new name for MD5 is MD5-CRYPT so you might need to change this depending on version
default_pass_scheme = MD5
# Get the mailbox
user_query = SELECT '/vmail/%d/%n' AS home, 'maildir:/vmail/%d/%n' AS mail, 150 AS uid, 8 AS gid, CONCAT('dirsize:storage=', quota) AS quota FROM mailbox WHERE username = '%u' AND active = '1'
# Get the password
password_query = SELECT username AS user, password, '/vmail/%d/%n' AS userdb_home, 'maildir:/vmail/%d/%n' AS userdb_mail, 150 AS userdb_uid, 8 AS userdb_gid FROM mailbox WHERE username = '%u' AND active = '1'
# If using client certificates for authentication, comment the above and uncomment the following
#password_query = SELECT null AS password, '%u' AS user

Poiché noi abbiamo memorizzato la nostra password di MySQL in formato testo normale in questo documento, stiamo andando a voler assicurarsi che siamo gli unici che possono leggerlo!

# chmod 600 /etc/dovecot/*.conf
# chown vmail /etc/dovecot/*.conf

La configurazione interna/insicura Dovecot è ormai finita! Vai avanti e restart del servizio dovecot:

# invoke-rc.d dovecot restart

… e gli utenti interni/webmail possono ora controllare per e-mail su postman.internal.example.com

VII. protezione E-mail

In un mondo ideale, i nostri utenti sarebbe in grado di inviare/ricevere e-mail ogni volta che erano in rete, da qualsiasi luogo nel mondo.Purtroppo, che è incredibilmente insicuro… le password sono essere sballottate avanti e indietro in formato testo normale tramite i protocolli SMTP e IMAP, e questo significa che chiunque volesse potrebbe solo ‘snoop’ la password.

Se gli utenti non devono raggiungere direttamente la soluzione di posta elettronica, quindi non dare a loro! Non c’è nessun punto nel sottolineare nel corso di un programma di installazione di posta elettronica sicura se tutte le vostre necessità di utenti è Webmail! Basta rendere sicura la loro connessione al server webmail e assicurarsi che il server di webmail utilizza una connessione di rete sicura quando si parla di server di posta. Problema risolto! Se, d’altra parte, gli utenti richiedono la possibilità di inviare/ricevere posta tramite internet senza utilizzare la webmail, Beh, allora, che solo rende le cose più difficili. Non impossibile, solo difficile.

Quindi, ecco il tuo problema: SMTP e IMAP è possibile inviare le password su testo non crittografato. Potete averli inviare le password utilizzando MD5, ma base MD5 può essere violato. Potete averli Invia password utilizzando MD5CRYPT, ma poi hai a che fare con più implementazioni (per non parlare del fatto che non tutti i client di posta elettronica supportano le password MD5). La soluzione? TLS (Transport Layer Security). Dobbiamo impostare la nostra soluzione per supportare una connessione crittografata tramite internet. Mentre si potrebbe modificare alcuni dei nostri server esistenti per gestire questo, non c’è nessun punto in eccesso che complica loro configurazioni. Ci serve solo per eseguire un server separato per gestire tutto questo: secure-mail.example.com

Nota: Nello scenario originale, la piccola impresa aveva più indirizzi IP statici. Poiché questo è il caso, siamo stati in grado di eseguire SMTP + TLS sulla porta 25, se non si dispongono di più indirizzi IP, quindi non è possibile. Il motivo è abbastanza semplice: IMAPS(secure IMAP) mentre corre una porta diversa (993) da standard IMAP (143), SMTP + TLS viene eseguito sulla stessa porta come SMTP (25). Quindi, utilizzando un firewall per il routing basato su porte consente di eseguire il server IMAP e IMAPS separati, ma nessun firewall al mondo in grado di instradare macchine diverse porta 25 o due. Anche con tutto questo, però, si potrebbe sempre basta eseguire SMTP + TLS su un non standard porta… diamine, sarebbe anche più sicuro.

Quindi, con tutto questo in mente, stiamo andando a impostare un server di posta sicuro, che utilizza SMTP + TLS per l’invio di mail e IMAPS per riceverlo.

R. certificati SSL di

La forma più semplice di crittografia sta avendo un semplice certificato autofirmato sul server. Questo genererà un messaggio di avviso quando il client si connettono in primo luogo, ma dovrebbero essere in grado di salvarlo per un ulteriore uso. Non è davvero sicuro, dal momento che chiunque può eseguire un attacco man-in-the-middle, se non si salva il certificato.

Il livello successivo è usando un certificato firmato da un’autorità di certificazione (CA), o una commerciale, o forse l’azienda CA interna. In questo modo, il certificato del server sarà considerati attendibile e se viene ora visualizzato un avviso, c’è potenzialmente qualcosa di brutto in corso.

Ultimo ma sicuramente non meno importante è utilizzare i certificati client per l’accesso al server e utilizzando un certificato server per autenticare il server ai client. Questo è abbastanza sicuro, ma non è supportato in tutti i client di posta. Thunderbird tra gli altri hanno il supporto per esso.

1. certificato server self-signed

Innanzitutto creare le directory, creare la chiave privata e infine creare il certificato.

# mkdir -p /etc/ssl/example.com/mailserver/
# cd /etc/ssl/example.com/mailserver/
# openssl genrsa 1024 > posta-Key. pem
# chmod 400 posta-Key. pem
# openssl req-new – x 509 – nodi-sha1-giorni 365 – chiave posta-Key. pem > mail-cert. pem

Nota che “Common Name (eg, YOUR name)” deve corrispondere al nome del server, che in questo caso è sicuro-mail.example.com

2. CA-firmato certificato

Utilizzando un certificato reale CA-firmato non è diverso da utilizzando uno autofirmato. È solo un altro passo verso la creazione della coppia di chiavi. Se l’azienda ha la propria CA, essi dovrebbe rilasciare un certificato per il server di posta. Una ricerca su Google per essere la ca vi darà abbastanza risposte per crearne uno voi stessi, se avete la necessità.

B. assicurare Postfix + TLS

Per cominciare, stiamo andando ad avere bisogno di installare postfix su secure-mail.example.com. Questa particolare installazione nonhanno bisogno di supporto alle quote (essa non gestione recapito locale), ma solo per mantenere le cose semplici, dovremo installarlo nello stesso modo che abbiamo fatto in precedenza:

# dpkg -i postfix_2.3.8-2_i386. deb
# dpkg -i postfix-mysql_2.3.8-2_i386. deb

Se la configurazione automatica pone domande sul postfix durante l’installazione, basta selezionare “Nessuna configurazione

dpkg è andando a installare tutti i file di configurazione per Postfix in /etc/postfix, quindi andateci e creare il file main.cf:

cd/etc/postfix n.
# touch main.cf

Il file main.cf può essere modificato utilizzando due diversi metodi. È possibile utilizzare un editor di testo, oppure è possibile utilizzare il built-in postfix strumentopostconfAbbiamo già utilizzato postconf una volta a determinare la nostra versione in sottosezione IV. A di cui sopra.

Il vero vantaggio dello strumento postconf è alcuni ha costruito in controllo errori, che elimina la possibilità di ‘stranezze’ a causa di ritorni a capo, avanzamenti riga, virgolette dispari, ecc. Che useremo in questa guida, ma non c’è davvero nessun requisito.

Iniziare compilando le informazioni di base:

# postconf -e ‘ myhostname = sicuro-mail.example.com’
# postconf -e ‘ smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)’
# postconf -e ‘ biff = no’
# postconf -e ‘ append_dot_mydomain = no’
# postconf -e ‘ myorigin = example.com’
# postconf -e ‘ inet_interfaces = all’
# postconf -e ‘ local_recipient_maps =’
# postconf -e ‘ local_transport = errore: locale recapito della posta è disabilitato ‘
# postconf -e ‘ smtpd_recipient_restrictions = permit_sasl_authenticated, rifiutare ‘

Si noterà che questa volta abbiamo disattivato il recapito locale. Dato che questo è fondamentalmente solo un server di inoltro in uscita, non vogliamo che esso cercando di ‘consegnare’
tutti i messaggi… basta mandare avanti. Abbiamo anche impostare il server SMTP per consentire solo le sessioni di autenticazione SASL e rifiutare tutte le altre sessioni.

Ora noi vogliamo inserire le informazioni per SASL (autenticazione SMTP). Questo non consente di crittografare la connessione, si richiede solo agli utenti di accedere:

# postconf -e ‘ smtpd_sasl_auth_enable = yes’
# postconf -e ‘ smtpd_sasl_security_options = noanonymous’
# postconf -e ‘ broken_sasl_auth_clients = yes’
# postconf -e ‘ smtpd_sasl_type = dovecot’
# postconf -e ‘ smtpd_sasl_path = privato/auth ‘

Così ora l’installazione di postfix interrogherà dovecot per tutte le esigenze di autenticazione di esso, ma ancora non è crittografato. Andiamo avanti e cambiare la situazione…

# postconf -e ‘ smtpd_tls_cert_file = /etc/ssl/example.com/mailserver/mail-cert.pem’
# postconf -e ‘ smtpd_tls_key_file = /etc/ssl/example.com/mailserver/mail-key.pem’
# postconf -e ‘ smtpd_tls_session_cache_database = btree: / var/spool/postfix/smtpd_tls_session_cache ‘
# postconf -e ‘ smtpd_tls_security_level = crittografare ‘
# postconf -e ‘ smptd_tls_received_header = no’
# postconf -e ‘ smtpd_tls_loglevel = 0’
# postconf -e ‘ tls_random_source = dev: / dev/urandom ‘

Vai avanti e ricaricare postfix…

# postfix reload

E allora andiamo Dovecot installato e funzionante…

C. sicuro Dovecot

Server Dovecot può fare IMAPS praticamente proprio fuori dalla scatola… quindi cerchiamo di arrivare installato sul posta sicura. Come al solito, Debian prende la maggior parte del lavoro fuori le nostri mani:

# apt-get install dovecot-imapd

Per i nostri scopi, abbiamo avuto bisogno POP3 (e davvero, non si dovrebbe), ma se si voleva, basta aggiungere dovecot-pop3dalla fine di quel comando.

Aprire il file di configurazione di Dovecot situato in /etc/dovecot/dovecot.confe farlo sembrare il seguente. Probabilmente c’è già un sacco di configurazione predefinita fatto, così si avrà probabilmente solo bisogno di decommentare alcune sezioni e cambiare le cose minori. Prestare particolare attenzione alle sezioni ssl_ del file, come sono diversi su questo server.

## Dovecot configuration file
#
base_dir = /var/run/dovecot/
#
# imap imaps pop3 pop3s (use imaps and pop3s if configured for SSL)
protocols = imaps
#
# Uncomment the ssl_listen statements and comment out listen if using SSL
protocol imap {
# listen = *:143
ssl_listen = *:993
}
#protocol pop3 {
#listen = *:110
# ssl_listen = *:995
#}
#
log_timestamp = “%Y-%m-%d %H:%M:%S ”
syslog_facility = mail
#
# Uncomment these if using SSL
ssl_cert_file = /etc/ssl/example.com/mailserver/mail-cert.pem
ssl_key_file = /etc/ssl/example.com/mailserver/mail-key.pem
#ssl_ca_file = /etc/ssl/mycompany/ca/mycompany.pem
#ssl_verify_client_cert = yes
ssl_parameters_regenerate = 168
verbose_ssl = no
#
# Where the mailboxes are located
mail_location = maildir:/vmail/%d/%u
#
mail_extra_groups = mail
mail_debug = no
first_valid_uid = 150
last_valid_uid = 150
maildir_copy_with_hardlinks = yes
#
protocol imap {
login_executable = /usr/lib/dovecot/imap-login
mail_executable = /usr/lib/dovecot/imap
imap_max_line_length = 65536
}
#protocol pop3 {
#login_executable = /usr/lib/dovecot/pop3-login
#mail_executable = /usr/lib/dovecot/pop3
#pop3_uidl_format = %08Xu%08Xv
#}
protocol lda {
postmaster_address = postmaster@mydomain.com
sendmail_path = /usr/lib/sendmail
auth_socket_path = /var/run/dovecot/auth-master
}
#
auth_verbose = no
auth_debug = no
auth_debug_passwords = no
#
auth default {
 mechanisms = plain
 passdb sql {
 args = /etc/dovecot/dovecot-sql.conf
 }
 userdb sql {
 args = /etc/dovecot/dovecot-sql.conf
 }
 user = nobody
 socket listen {
 master {
 path = /var/run/dovecot/auth-master
 mode = 0660
 user = vmail
 group = mail
 }
 client {
 path = /var/spool/postfix/private/auth
 mode = 0660
 user = postfix
 group = postfix
 }
 }
 #
 # If you want client certificates, use these lines
 # ssl_require_client_cert = yes
 # ssl_username_from_cert = yes
}

Nota: Tu non puoi copiare la configurazione di cui sopra e si aspettano di lavorare! Servira ‘ incorporare le modifiche sopra la propria configurazione.

La configurazione di Dovecot è quasi completa, ma come con la configurazione precedente, le impostazioni di MySQL devono essere incorporate.

Aprire il file /etc/dovecot/dovecot-sql.conf e assicurarsi che sia presente il seguente.

driver = mysql
connect = host=sql-1.internal.example.com dbname=virtual_mail user=vmail_user password=vmail_user_password
# The new name for MD5 is MD5-CRYPT so you might need to change this depending on version
default_pass_scheme = MD5
# Get the mailbox
user_query = SELECT '/vmail/%d/%n' AS home, 'maildir:/vmail/%d/%n' AS mail, 150 AS uid, 8 AS gid, CONCAT('dirsize:storage=', quota) AS quota FROM mailbox WHERE username = '%u' AND active = '1'
# Get the password
password_query = SELECT username AS user, password, '/vmail/%d/%n' AS userdb_home, 'maildir:/vmail/%d/%n' AS userdb_mail, 150 AS userdb_uid, 8 AS userdb_gid FROM mailbox WHERE username = '%u' AND active = '1'
# If using client certificates for authentication, comment the above and uncomment the following
#password_query = SELECT null AS password, '%u' AS user

Poiché noi abbiamo memorizzato la nostra password di MySQL in formato testo normale in questo documento, stiamo andando a voler assicurarsi che siamo gli unici che possono leggerlo!

# chmod 600 /etc/dovecot/*.conf
# chown vmail /etc/dovecot/*.conf

La configurazione esterna/Secure Dovecot è ormai finita! Vai avanti e restart del servizio dovecot:

# invoke-rc.d dovecot restart

… e gli utenti esterni/insicuro possono ora controllare per email su mail.example.com secure!

C. CA firmato certificati client e server

Se si desidera utilizzare i certificati client CA-firmato, sarà necessario adottare ulteriori misure sia in Postfix Dovecot per fare questo lavoro.Se si desidera i nomi utente per essere ricavati dal certificato stesso, è attualmente necessario impostare il nome comune al nome utente, ad esempio user@example.com, che è stato utilizzato in questo documento.

1. Postfix raccontando i certificati

In Postfix, è possibile utilizzare una directory di certificati CA, o di un file composito con tutti i certificati concatenati tra loro. Stiamo andando a utilizzare il modulo di concatinated, dato che questo è quello che aspetta Dovecot.

# postconf -e ‘ smtpd_tls_CAfile = /etc/ssl/example.com/ca/all.pem’

2. dicendo Dovecot sui certificati

In Dovecot, è necessario disporre il CRL unitamente al certificato per l’autenticazione al lavoro. Le direttive stesse sono i seguenti.

/etc/dovecot/dovecot.conf
[...]
ssl_ca_file = /etc/ssl/example.com/ca/all.pem
ssl_verify_client_cert = yes
ssl_require_client_cert = yes
ssl_username_from_cert = yes
[...]

Nota: Sarà inoltre necessario modificare il password_query a quello commentato in /etc/dovecot/dovecot-sql.conf

Avviso: Se si esegue la candidata di Dovecot 28 o più anziani, il server non invierà la lista dei nomi di CA accettati, che potrebbe rendere i clienti con più client certificati Impossibile connettersi. Si prega di aggiornare o installare questa patch.

3. Concatinating file

Se avete parecchi CAs e CRL, potrebbe essere difficile per concatenarle ogni volta, così un piccolo script è stato creato che che farà per voi. Basta inserirla nella directory /etc/ssl/example.com/ca/ ed eseguirlo. Si creerà un all.pem con tutti i certificati e tutti i CRL.

make.sh:
#!/bin/bash
rm all.pem 2> /dev/null
cat *.pem *.crl > all.pem

4. impostazioni TLS di postfix

Come ho detto prima, ci sono alcune impostazioni in Postfix che hanno bisogno di essere cambiato pure, così andiamo a modificaremain.cf:

# postconf -e ‘ smtpd_tls_ask_ccert = yes’
# postconf -e ‘ smtpd_tls_req_ccert = no’
# postconf -e ‘ smtpd_recipient_restrictions = permit_tls_all_clientcerts, rifiutare ‘

Ora si dovrebbe avere un server di posta elettronica pronto enterprise con certificati client.

Fonti e parole VIII. def.

Quindi, supponendo che hai seguito questa guida alla sua interezza, si dovrebbe avere una soluzione di posta elettronica completamente funzionale. Hai un MX primario e secondario, un server di consegna di posta, un server di posta sicuro e una sana dose di spam e protezione anti-virus.

Significa che potete semplicemente premere il pulsante ‘Vai’ e a piedi?Assolutamente no. Primo luogo fuori, sta andando a voler eseguire il sistema attraverso una serie di prove… tutto ciò che prova.Provare a inviare posta utilizzando il MX primario e secondario come server SMTP (non dovrebbe funzionare), provare l’invio di posta elettronica utilizzando il server di posta sicuro, ma senza le impostazioni di protezione attivate nel tuo client (non anche dovrebbe funzionare). Provare tutto e poi quando è tutto lavoro, provare di nuovo. Non volete andare rotolamento questa configurazione in produzione senza aver testato accuratamente prima.

Inoltre, è interamente possibile che qualcosa (o alcune cose) sono corrette in questa guida. Una grande parte di esso è stato scritto dalla memoria, e che si apre sempre fino a un foro o due. Se trovate un clamoroso errore, non esitate a scrivermi due righe, e potrai farlo fisso. Questa è una guida lunga, non sarei sorpreso se c’erano pochi difetti in esso.

Infine, vorrei inviare un ‘grazie’ per le varie persone che mi hanno aiutato a scrivere questa guida. Non c’è più di una fonte che ‘in prestito’ da verbatim, e non potevo avere scritto questo senza di loro. In nessun ordine particolare:

Piaciuto l'articolo? Condividilo sui social!

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn
Share on whatsapp
WhatsApp