Se si desidera inviare o ricevere una e-mail, si dovrebbe avere un server di posta. In questo post, discuteremo il server di posta Linux e come funziona l’SMTP (Simple Mail Transfer Protocol) così come altri protocolli relativi alla posta, come Post Office Protocol (POP) e Internet Message Access Protocol (IMAP) e la relazione tra loro.,
Sommario
Linux SMTP server
SMTP definisce come inviare la posta da un host all’altro; è anche indipendente dal sistema, il che significa che il mittente e il destinatario possono avere sistemi operativi diversi.
SMTP richiede solo che un server possa inviare testo ASCII dritto a un altro server, è possibile farlo collegandosi al server sulla porta 25, che è la porta SMTP standard.
La maggior parte delle distribuzioni Linux oggi sono dotate di due delle implementazioni più comuni di SMTP, che sono sendmail e Postfix.,
Sendmail è un server di posta famoso e gratuito, ma ha un design un po ‘ complesso e meno sicuro.
Il Postfix ha portato l’implementazione del server di posta un ulteriore passo avanti; lo hanno sviluppato pensando alla sicurezza.
Componenti del servizio di posta
Il servizio di posta su qualsiasi server di posta ha tre componenti:
Mail User agent (MUA): questo componente che l’utente vede e interagisce con come Thunderbird e Microsoft Outlook, questi user agent sono responsabili della lettura della posta e consentono di comporre la posta.,
Mail Transport agent (MTA): questo componente è responsabile per ottenere la posta da un sito all’altro come Sendmail e Postfix.
Mail Delivery agent (MDA): questo componente è responsabile della distribuzione dei messaggi ricevuti sul computer locale alla casella di posta utente appropriata come postfix-maildrop e Procmail.
Setup Email server
Abbiamo scelto il Postfix mail server, che è molto popolare e comune tra gli amministratori di sistema di oggi.
Postfix è il server di posta predefinito sulla maggior parte delle moderne distribuzioni Linux.,
in Primo luogo, verificare se si è installato sul vostro sistema, o non:
$ rpm -qa | grep postfix
Se non è installato, è possibile installare il server di posta Postfix su Red Hat based distribuzioni come questo:
$ dnf -y install postfix
avviare il servizio postfix e attivare l’avvio del sistema:
$ systemctl start postfix$ systemctl enable postfix
Su distribuzioni basate su Debian, come Ubuntu, è possibile installarlo come questo:
$ apt-get -y install postfix
ti verrà chiesto di selezionare il tipo di configurazione del server di posta Postfix durante il processo di installazione.,
Tra le quattro scelte Nessuna configurazione, sito Internet, Internet con smarthost, sistema satellitare e solo locale, sceglieremo Nessuna opzione di configurazione.
Configura il server di posta Linux
Dopo aver installato il server di posta Postfix, dovrai configurarlo; puoi trovare la maggior parte dei suoi file di configurazione nella directory/etc/ postfix/.
È possibile trovare la configurazione principale per il server di posta Postfix nel file/etc/postfix / main.cf.,
Questo file contiene molte opzioni come:
myhostname
È possibile utilizzare questa opzione per specificare il nome host del server di posta. Questo è il nome host Internet, che Postfix riceverà e-mail su di esso.
Il nome host può essere come mail.example.com, smtp.example.com.
myhostname = mail.example.com
dominio
Questa opzione è il dominio di posta che verrà manutenzione, come example.com
La sintassi è simile a questo:
mydomain = example.com
myorigin
Tutti i messaggi inviati da questo server di posta avrà un aspetto come se fosse venuta da questa opzione., È possibile impostare questo valore su my mydomain.
myorigin = $mydomain
Puoi usare qualsiasi valore di opzione, basta precederlo con un my like my mydomain.
mydestination
Questa opzione elenca i domini utilizzati dal server Postfix per le e-mail in arrivo.
Può assumere valori come questo:
mydestination = $myhostname, localhost.$mydomain, $mydomain, mail.$mydomain, www.$mydomain
mail_spool_directory
Ci sono due modalità di consegna che Postfix mail server può utilizzare:
- Direttamente alla casella di posta di un utente.
- In una directory di spool centrale, in questo modo, la posta sarà in /var/spool/mail con un file per ogni utente.,
mail_spool_directory = /var/spool/mail
mynetworks
Questa opzione consente di configurare quali server possono inoltrare tramite il server Postfix.
Questa opzione dovrebbe prendere indirizzi locali come script di posta locale solo sul tuo server.
In caso contrario, gli spammer possono utilizzare il server di posta per inoltrare i loro messaggi e il server di posta nella lista nera e, di conseguenza, non sarà in grado di ricevere molte email.,
Questa opzione ha la seguente sintassi:
mynetworks = 127.0.0.0/8, 192.168.1.0/24
smtpd_banner
Questa variabile imposta il messaggio che il server invierà quando il client dopo una connessione riuscita.
È meglio cambiare il banner in qualcosa che non dia alcun indizio sul server che stai usando.
inet_protocols
Questa opzione specifica la versione del protocollo IP utilizzata per le connessioni al server.,
inet_protocols = ipv4
Se si modifica il file di configurazione per il server di posta Postfix, è necessario ricaricare il servizio:
$ systemctl reload postfix
Quando si esegue qualsiasi tipo di configurazione, si può fare un errore, si possono verificare errori utilizzando il seguente comando:
$ postfix check
Questo strumento vi aiuterà a trovare esattamente la linea e l’errore in modo che si può risolvere il problema.
Controllo della coda di posta
A volte le code di posta sono riempite di messaggi. Ciò accade a causa di molti motivi, come un errore di rete o qualsiasi motivo che possa ritardare la consegna della posta.,
Per controllare la coda di posta sul server di posta Linux, utilizzare il seguente comando:
$ mailq
Questo comando mostra la coda di posta Postfix.
Se la coda è piena e il messaggio richiede diverse ore per essere elaborato, è necessario svuotare la coda di posta.
$ postfix flush
Ora, se controlli la tua coda di posta, dovresti trovarla vuota.
Test Linux mail server
Dopo aver configurato correttamente il server di posta Postfix, è necessario testare il server di posta.,
Il primo passo è utilizzare un agente utente di posta locale come mailx o mail, che è un collegamento simbolico a mailx.
Prova a inviare una mail a qualcun altro sullo stesso server, se funziona, quindi invia a un sito remoto.
Quindi prova a ricevere una mail da un sito remoto.
In caso di problemi, controllare i registri. Il file di log sulle distribuzioni basate su Red Hat nel file/var/log / maillog e sulle distribuzioni basate su Debian in / var / log / mail.file di log o come definito nella configurazione rsyslogd.,
Ti consiglio di rivedere il server Syslog Linux per una spiegazione dettagliata sui log e su come configurare rsyslogd.
Se hai ancora problemi, prova a controllare le impostazioni DNS e controlla i tuoi record MX usando i comandi di rete Linux.
Cassette postali sicure dallo spam utilizzando SpamAssassin
Uno dei modi per combattere lo spam è quello di eseguire la scansione delle cassette postali da qualche strumento, alla ricerca di alcuni modelli associati con lo spam.
Una delle migliori soluzioni è SpamAssassin, che è open-source.,
È possibile installarlo come questo:
$ dnf -y install spamassassin
avviare il servizio e si attiva all’avvio:
$ systemctl start spamassassin$ systemctl enable spamassassin
una Volta installato, è possibile controllare la configurazione
/etc/mail/spamassassin/local.cf
file.
SpamAssassin determina se un’e-mail è spam o meno in base al risultato dei diversi punteggi degli script.
Se il messaggio ha un punteggio più alto, ciò significa una maggiore possibilità che la posta sia spam.,
Nel file di configurazione, il parametro required_hits 5 indica che SpamAssassin contrassegna un’email come spam se il suo punteggio è pari o superiore a cinque.
L’opzione report_safe assume i valori 0, 1 o 2. Se impostato su 0, significa che l’e-mail contrassegnata come spam viene inviata così com’è, modificando solo le intestazioni per mostrare che si tratta di spam.
Se assume il valore 1 o 2, SpamAssassin genera un nuovo messaggio di report e invia il messaggio al destinatario.,
Il valore 1 indica che il messaggio spam è codificato come content message/rfc822, mentre se il valore è 2, significa che il messaggio è codificato come text/plain content.
Il testo/plain è più sicuro poiché alcuni client di posta eseguono message / rfc822 e potrebbero infettare il computer client.
Ora abbiamo bisogno di integrarlo in Postfix. Il modo più semplice per farlo è probabilmente usando procmail.
Dovremo creare un file, chiamato
/etc/procmailrc
, e aggiungere il seguente contenuto:
:0 hbfw| /usr/bin/spamc
Quindi modifichiamo il file di configurazione Postfix /etc/postfix/main.,cf e modificare
mailbox_command
mailbox_command = /usr/bin/procmail
Infine, riavviare Postfix e SpamAssassin servizi:
$ systemctl restart postfix$ systemctl restart spamassassin
Tuttavia, SpamAssassin, a volte non riconosce i messaggi di spam che ha portato alle cassette postali riempita di messaggi di spam.
Fortunatamente, è possibile filtrare i messaggi prima che entrino nel server Postfix utilizzando Realtime Blackhole Lists (RBLs). Ciò diminuirà il carico sul tuo server di posta e manterrà pulito il tuo server di posta.
Aprire il file di configurazione del server Postfix / etc / postfix / main.,cf e cambia l’opzione smtpd_recipient_restrictions e aggiungi le seguenti opzioni come questa:
Quindi riavvia il tuo server postfix:
$ systemctl restart postfix
I RBL sopra riportati sono quelli comuni; puoi trovare più elenchi sul web e provarli.
Protezione della connessione SMTP
È meglio trasferire il traffico SMTP su TLS per proteggerlo dall’attacco Man In The Middle (MITM).
Per prima cosa, dobbiamo generare il certificato e la chiave usando il comando openssl:
Quindi aggiungere la seguente opzione al file di configurazione Postfix/etc/postfix / main.,cf:
Infine, riavvia il tuo servizio postfix:
$ systemctl restart postfix
Ora, devi scegliere il TLS sul tuo client quando ti connetti al server.
Riceverai un avviso quando invii una mail la prima volta dopo aver modificato l’impostazione perché il certificato non è firmato.
Utilizzando Let’s Encrypt certificates
Let’s Encrypt è un provider di certificati SSL gratuito che consente di crittografare il traffico.
Invece di utilizzare certificati autofirmati che infastidiscono gli utenti a fidarsi di loro, è possibile utilizzare questa buona soluzione.,
in Primo luogo, installare letsencrypt:
$ yum install letsencrypt
O se si sta utilizzando le distribuzioni basate su Debian, è possibile utilizzare il seguente comando:
$ apt-get install letsencrypt
Quindi eseguire letsencrypt come questo:
$ letsencrypt certonly --standalone -d yourdomain.com
Si dovrebbe sostituire yourdomain.com con il tuo dominio effettivo.
Dopo aver risposto alle domande richieste sull’e-mail di contatto, sul dominio del server di posta elettronica e sulla licenza, tutto dovrebbe essere OK ora.,
I certificati saranno in:
/etc/letsencrypt/live/yourdomain.com/
Un’ultima cosa che devi fare, che sta facendo usare postfix quei certificati, puoi usare i seguenti comandi:
Non dimenticare di sostituire yourdomain.com con il tuo dominio reale.
Infine, riavvia il tuo server postfix:
$ systemctl restart postfix
Basi del protocollo POP3 e IMAP
Finora abbiamo visto come il server di posta SMTP invia e riceve email senza problemi, ma considera le seguenti situazioni:
- Gli utenti hanno bisogno di copie locali di e-mail per la visualizzazione offline.,
- il formato di file mbox non è supportato. Il formato mbox è usato da molti mail user agent come mailx e mutt.
- Gli utenti non possono rimanere connessi a una rete veloce per afferrare una copia locale da leggere offline.
- Alcuni server di posta non danno accesso alle directory di spool di posta condivisa per motivi di sicurezza.
Per gestire questi casi, è necessario utilizzare i protocolli di accesso alla posta.
I due protocolli di accesso alla posta più comuni sono Post Office Protocol (POP) e Internet Message Access Protocol (IMAP).,
L’idea alla base di POP è molto semplice: un server di posta Linux centrale rimane online tutto il tempo e riceve e memorizza le email per tutti gli utenti. Tutte le e-mail ricevute vengono accodate sul server fino a quando un utente non le afferra.
Quando un utente desidera inviare un’e-mail, il client di posta elettronica lo trasmette normalmente tramite il server di posta centrale Linux tramite SMTP.
Si noti che il server SMTP e il server POP possono essere sullo stesso sistema senza alcun problema. La maggior parte dei server lo fa oggi.
Caratteristiche come mantenere una copia master di e-mail di un utente sul server mancavano, che ha portato allo sviluppo di IMAP.,
Utilizzando IMAP, il server di posta Linux supporterà tre modalità di accesso:
- La modalità online è simile ad avere accesso diretto al file system al server di posta Linux.
- La modalità offline è simile a come funziona POP, in cui il client è disconnesso dalla rete tranne quando si afferra un’e-mail. In questa modalità, il server normalmente non conserva una copia dell’e-mail.
- La modalità disconnessa consente agli utenti di conservare copie memorizzate nella cache delle proprie e-mail e il server conserva una copia dell’e-mail.,
Esistono diverse implementazioni per IMAP e POP; la più popolare è il server Dovecot, che fornisce entrambi i protocolli.
POP3, POP3S, IMAP e IMAP ascoltano rispettivamente sulle porte 110, 995, 143 e 993.
Installazione di Dovecot
La maggior parte delle distribuzioni Linux viene fornita con Dovecot preinstallato., Tuttavia, è possibile installare Dovecot in Red Hat based distribuzioni come questo:
$ dnf -y install dovecot
le distro basate su Debian fornire IMAP e POP3 funzionalità in due pacchetti separati, è possibile installare in questo modo:
$ apt-get -y install dovecot-imapd dovecot-pop3d
vi chiederà di creare un certificato autofirmato per l’utilizzo di IMAP e POP3 su SSL/TLS. Selezionare sì e immettere il nome host per il sistema quando richiesto.,
Quindi è possibile eseguire il servizio e abilitarlo all’avvio in questo modo:
$ systemctl start dovecot$ systemctl enable dovecot
Configura Dovecot
Il file di configurazione principale per Dovecot è
/etc/dovecot/dovecot.conf
.
Alcune distribuzioni Linux mettono la configurazione nella directory
/etc/dovecot/conf.d/
e usano la direttiva include per includere le impostazioni nei file.
È possibile utilizzare il seguente elenco di parametri per configurare Dovecot:
protocolli: i protocolli che si desidera supportare.
protocols = imap pop3 lmtp
lmtp significa protocollo di trasferimento della posta locale.,
listen: indirizzi IP su cui ascoltare.
listen = *, ::
L’asterisco indica tutte le interfacce ipv4 e :: indica tutte le interfacce ipv6
userdb: database utente per l’autenticazione degli utenti.
userdb {driver = pam}
passdb: database delle password per l’autenticazione degli utenti.
passdb {driver = passwd}
mail_location: questa voce in / etc / dovecot / conf.d / 10-posta.conf file:
mail_location = mbox:~/mail:INBOX=/var/mail/%u
Sicuro Dovecot
Dovecot viene fornito con certificati SSL generici e file chiave., Guarda questo file:
/etc/dovecot/conf.d/10-ssl.conf
ssl_cert = </etc/pki/dovecot/certs/dovecot.pemssl_key = </etc/pki/dovecot/private/dovecot.pem
Quando un utente tenta di connettersi al server dovecot, mostrerà un avviso perché i certificati non sono firmati, puoi acquistare un certificato da un’autorità di certificazione se lo desideri.
O se si utilizza Let’s Encrypt certificates, è possibile indicarli:
ssl_cert = </etc/letsencrypt/live/yourdomain.com/fullchain.pemssl_key = </etc/letsencrypt/live/yourdomain.com/privkey.pem
Non dimenticare di aprire le porte del server dovecot nel firewall iptables aggiungendo le regole iptables per le porte 110, 995, 143, 993, 25.
Quindi salvare le regole.,
O se si utilizza firewalld, è possibile effettuare le seguenti operazioni:
E di nuovo, per la risoluzione dei problemi, controllare i file di registro /var/log/messages, /var/log/maillog e /var/log/mail.log.
Linux mail server è uno dei server più facili con cui lavorare, in particolare il server di posta Postfix.
Spero che trovi il post utile e interessante. Continua a tornare.
Grazie.
Fondatore di LikeGeeks. Sto lavorando come amministratore di sistema Linux dal 2010., Sono responsabile della manutenzione, della protezione e della risoluzione dei problemi dei server Linux per più client in tutto il mondo. Mi piace scrivere script shell e Python per automatizzare il mio lavoro.
Lascia un commento