GNU/Linux >> Linux Esercitazione >  >> Debian

Installa il server di posta Postfix e Dovecot su Ubuntu o Debian

Configura il server SMTP Postfix su Ubuntu/Debian

Hai il tuo nome di dominio e il tuo server vps/dedicato e desideri utilizzare il nome di dominio per le e-mail. Quindi è necessario configurare un server di posta utilizzando un server smtp e un server imap/pop.

Questo tutorial mostra come configurare Postfix (server smtp) e Dovecot (server imap/pop). Il compito del server SMTP è accettare la posta in arrivo e inoltrare la posta in uscita da utenti autorizzati sul sistema.

Mentre Dovecot consente agli utenti autorizzati di accedere alla propria Posta in arrivo e leggere qualsiasi posta ci sia.

La configurazione semplice - Non lo stiamo facendo

Nel tipo più semplice di configurazione per Postfix, basta specificare il tuo nome di dominio "xyz.com" nel parametro di configurazione "mydestination" quindi sarai in grado di ricevere mail per [email protected] se c'è un utente (linux) di nome silver sul sistema.

Questa tecnica è semplice ma con pesanti inconvenienti. Per prima cosa devi creare un nuovo account utente Unix per ogni nuovo indirizzo email di cui abbiamo bisogno.

In secondo luogo, gli utenti devono effettuare il login con le loro password di sistema. Quindi questa non è una strategia molto flessibile per configurare gli account di posta.

Separatamente puoi configurare Dovecot per leggere la posta in arrivo dalla directory in cui Postfix le memorizza (/var/mail di default). C'è un articolo su DigitalOcean che mostra come impostare postfix con dovecot del genere.

Imposteremo le cose in modo che tu possa creare rapidamente indirizzi e-mail semplicemente scrivendoli in un file insieme alla password.

Aggiungeremo tutti i domini che vogliamo e creeremo tutte le email e tutto sarà crittografato e autenticato.

Since the email accounts we shall be creating are not related to any system users or system domains, they are called "virtual users" and "virtual domains".

Virtual means, that not related to any system specific thing.

Come funzionerà? - Il gergo tecnico

1. Tutta la posta in arrivo destinata al tuo server deve essere ricevuta da Postfix (SMTP) e quindi consegnata a Dovecot (LMTP) per essere archiviata nella Posta in arrivo.

Questo è meglio perché il servizio lmtp integrato di dovecot offre più funzionalità come quote, autorizzazioni, strutture di directory flessibili per le cassette postali ecc.

Incoming mail (From somewhere) -> Postfix (SMTP) -> Dovecot (LMTP) -> MailBox/Inbox
And due to this Postfix is reduced to just a "tranmission agent" that just moves mails in and out, and nothing else.

2. Tutti i messaggi in uscita devono essere spediti tramite Postfix. Ma solo da account autenticati.

Outgoing mail (Thunderbird) -> Postfix (SMTP) -> Destination (SMTP) like gmail

3. Dovecot fornirà servizi IMAP/POP per consentire ai client di posta di leggere Inbox.

Thunderbird <==> Dovecot (IMAP) <==> Inbox

4. Dovecot fornirà esclusivamente il meccanismo di autenticazione a Postfix tramite SASL.
Gli account e-mail - nome utente + password devono essere archiviati in un file.

Se desideri configurare domini e account e-mail in un database (anziché in un file), segui questo tutorial su linode.com

Imposta i record MX per il dominio

Prima di andare oltre, assicurati che i record MX per i tuoi domini che utilizzerai con il tuo server di posta siano impostati correttamente. La maggior parte dei provider di server come Linode fornisce un'interfaccia semplice per impostare le voci di zona per i record mx.

Se il tuo dominio è esempio.com il tuo mx potrebbe essere mail.esempio.com per esempio. Usa il comando dig per verificare -

# Find the MX (mail exchange) server
$ dig MX amazon.com +short
5 amazon-smtp.amazon.com.
# Find the ip address of the mx server
$ dig amazon-smtp.amazon.com +short
207.171.184.25

Assicurati che l'indirizzo IP del tuo MX (server di posta) sia di quel server su cui installerai postfix e dovecot.

Configurazione del server di posta Postfix in Ubuntu passo dopo passo

La prima cosa da configurare è Postfix. Non dimenticare che nella nostra configurazione Postfix trasmetterà tutti i messaggi in uscita, ma per tutti i messaggi in arrivo li consegnerà a Dovecot per l'archiviazione e l'accesso successivo da parte dei client di posta elettronica.

Le cose da sapere prima

1. Postfix registra tutte le sue azioni in un file chiamato /var/log/mail.log. Controllalo per informazioni utili e risparmia tempo nella diagnosi dei problemi.

2. Il comando postconf è lo strumento per sbirciare all'interno delle configurazioni di Postfix. Elenca tutto in un formato nome=valore per riga. Quindi usa il comando grep per trovare tutto ciò di cui hai bisogno.

3. Tutti i parametri di configurazione di Postfix si trovano nel file /etc/postfix/main.cf
I parametri sono spiegati nelle pagine man che si trovano in - "man 5 postconf"

Installa e configura Postfix

Ok, quindi se non l'hai già fatto, installa Postfix. È proprio lì nei repository, quindi non dovresti cercare altrove a meno che tu non voglia qualcosa di nuovo.

$ sudo aptitude install postfix

Non preoccuparti, il resto non sarà così facile. Dopo aver installato Postfix potresti voler controllare la versione. Ecco il comando per farlo.

$ postconf mail_version
mail_version = 2.10.2
$ postconf | grep mail_version
mail_version = 2.10.2

Configura main.cf

In questa sezione configureremo diverse cose nel file di configurazione principale di Postfix che si trova in /etc/postfix/main.cf .

Questi includono nomi host, parametri per l'autenticazione SASL, socket unix per dovecot lmtp e dovecot sasl servizio di autenticazione e l'elenco dei nostri virtual_mailbox_domains per i quali Postfix sarà responsabile della ricezione della posta in arrivo.

I parametri difficili!!!

I seguenti parametri sono i 3 parametri super confusi che è necessario comprendere e configurare correttamente per evitare problemi imprevisti.

myhostname
mydomain
myorigin

Potresti ospitare più domini sul tuo server, ad esempio abc.com + efg.com + xyz.com. Devi usarne uno come dominio principale e usarlo per "myorigin". Il campo myorigin è quello che viene configurato automaticamente durante l'installazione di postfix e ti chiede il dominio del server.

Per impostazione predefinita myorigin è configurato per puntare a /etc/mailname in modo da poter inserire il tuo dominio predefinito in /etc/mailname o specificarlo direttamente nel file di configurazione.

The domain specified with myorigin is used for mails generated by Postfix. For example when it fails to deliver a mail, it would reply with a from address of "Mail Delivery System<[email protected]>".

Il parametro myhostname dovrebbe contenere il tuo "nome del server di posta" come indicato dal tuo record mx. Questo è il nome che Postfix usa nella comunicazione SMTP per identificarsi. Ad esempio "HELO myhostname".

If you set myhostname to a certain domain, then you should be able to setup the SPF records for that domain later. This is dictated by the SPF specifications.

Potresti anche lasciare myhostname solo su "localhost" e le cose funzionerebbero comunque bene. Tuttavia, in tal caso, il tuo server utilizzerà un messaggio come "HELO localhost" durante la connessione ad altri server di posta come Gmail e Gmail rifiuterebbe con rabbia la posta chiamandola non richiesta.

Pertanto si consiglia di configurare myhostname su un nome di dominio appropriato con record A e TXT (SPF) validi. Assicurati anche di impostare myorigin.

Esempio di configurazione -

myhostname = mail.yoursite.com
myorigin = yoursite.com

Tecnicamente, su un singolo server, puoi utilizzare lo stesso valore di myorigin per myhostname. Tuttavia, in configurazioni diverse che coinvolgono più server separati, i valori di questi campi devono essere impostati con maggiore attenzione.

Per saperne di più leggi la guida alla configurazione di base di Postfix.

Configura il socket LMTP in main.cf

Il parametro virtual_transport dice a postfix di inoltrare/trasportare le mail a dovecot per quei domini che sono elencati in "virtual_mailbox_domains".

# Handing off local delivery to Dovecot's LMTP
virtual_transport = lmtp:unix:private/dovecot-lmtp

Il percorso "private/dovecot-lmtp" è relativo a "/var/spool/postfix/". La presa unix effettiva sarà configurata più avanti nella sezione di configurazione di Dovecot.

Configura SASL in main.cf

Qui impostiamo i parametri per configurare l'autenticazione basata su SASL per Postfix. Postfix internamente è in grado di comunicare con il "servizio SASL di Dovecot" tramite un socket unix.

#Enabling SMTP for authenticated users, and handing off authentication to Dovecot

smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes

smtpd_tls_auth_only = yes

Per verificare quali diversi plug-in smtpd_sasl_type supporta la tua installazione di Postfix, esegui il comando seguente.

# postconf -a
cyrus
dovecot

Aggiungi domini delle cassette postali in main.cf

Qui specifichiamo i domini per i quali Postfix "accetterà" la posta in arrivo. Quindi specifica qui tutti i tuoi domini interni. Metteremo i domini in un file chiamato virtual_mailbox_domains.

#Virtual domains, users, and aliases
virtual_mailbox_domains = /etc/postfix/virtual_mailbox_domains
# virtual_mailbox_maps = /etc/postfix/virtual_mailbox_maps
# nano /etc/postfix/virtual_mailbox_domains

Inserisci i domini, uno in una riga

example.com OK
mysite.com OK

Quindi esegui postmap sul file. Creerà un file chiamato virtual_mailbox_domains.db che verrà utilizzato da Postfix

# postmap /etc/postfix/virtual_mailbox_domains

La tabella virtual_mailbox_maps può essere utilizzata per specificare indirizzi email validi per i domini elencati in virtual_mailbox_domains.

However this is not necessary, since the SASL authentication via Dovecot would be doing the verification.

Abilita SMTPS e MSA - master.cf

Oltre al servizio smtp sulla porta 25 dobbiamo abilitare più servizi. SMTPS opererà sulla porta 465 e MSA (Mailsubmission Agent) opererà sulla porta 587. SMTP utilizza il tipo di autenticazione SSL/TLS e MSA utilizza STARTTLS.

Trova la sezione su "submission" e "smtps" nel file chiamato /etc/postfix/master.cf e decommenta le prime righe. SI SOLO LA PRIMA LINEA

...
submission inet n       -       -       -       -       smtpd
#  -o syslog_name=postfix/submission
#  -o smtpd_tls_security_level=encrypt
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_reject_unlisted_recipient=no
#  -o smtpd_client_restrictions=$mua_client_restrictions
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
#  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
smtps     inet  n       -       -       -       -       smtpd
#  -o syslog_name=postfix/smtps
#  -o smtpd_tls_wrappermode=yes
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_reject_unlisted_recipient=no
#  -o smtpd_client_restrictions=$mua_client_restrictions
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
#  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
...

La riga "submission" abilita il servizio MSA sulla porta 587 e "smtps" avvia il servizio SMTP abilitato SSL sulla porta 465.

Potresti voler abilitare solo il servizio di invio, poiché SMTPS ora è deprecato e mantenuto solo per compatibilità con le applicazioni Microsoft che non supportano STARTTLS.

Due to historic specifications, technically port 25, 465, 587 do almost the same thing. However as things are evolving they are being redefined.

Porta 25 - è per MTA (Mail Transmission Agent). Il servizio MTA consente ad altri MTA e MSA di connettersi e consegnare la posta.

Porta 465/587 - è per MSA (agente di invio della posta). Il servizio MSA consente ai MUA (mail user agent come thunderbird) di connettersi e depositare e-mail per la consegna.

Thunderbird (MUA) -> your server smtp(MSA/MTA) -> gmail (MTA) -> Inbox

Riavvia Postfix

Abbiamo finito di configurare Postfix. Ora riavvia.

$ sudo service postfix restart

Installa e configura Dovecot

Abbiamo finito con l'installazione e la configurazione di Postfix. Ciò che resta è Dovecot, il server IMAP/POP. Ma Dovecot fa molto di più, come vedremo adesso.

Cose da sapere

1. A Dovecot deve essere assegnato un luogo in cui conservare la posta in arrivo consegnata da Postfix.

2. Deve essere creato un account utente di sistema separato e fornito a dovecot in modo che dovecot possa leggere/scrivere la directory di archiviazione della posta. Nel nostro esempio l'utente è chiamato "vmail".

3. Dovecot ospiterà servizi IMAP e POP sicuri per consentire ai client di posta elettronica di leggere la Posta in arrivo.

4. Dovecot fornirà il servizio di autenticazione SASL a Postfix tramite un socket unix. Lo stesso nome utente/password funzionerà sia con Postfix (server SMTP) che con Dovecot (server IMAP/POP)

5. Utilizzeremo l'indirizzo e-mail completo ([email protected]) come nome utente e imposteremo anche una password crittografata.

Installa Dovecot

Per prima cosa installa dovecot e alcuni pacchetti necessari. Installa il pacchetto principale di dovecot e i pacchetti per il supporto di imap, pop e lmtp.

# sudo apt-get install dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd

Controlla la versione

# dovecot --version
2.1.7

Configura Dovecot

Ora è il momento di configurare Dovecot per configurare gli account utente e anche i socket SASL per consentire a Postfix di eseguire autenticazioni. Tutti i file di configurazione si trovano all'interno di /etc/dovecot/conf.d/ directory.

Controlla /etc/dovecot/dovecot.conf file e assicurati che il file di protocolli sia incluso. Include i file di configurazione per vari protocolli che li abilitano.

# Enable installed protocols
!include_try /usr/share/dovecot/protocols.d/*.protocol

I protocolli installati possono essere elencati in questo modo

# ls -l /usr/share/dovecot/protocols.d
total 12
-rw-r--r-- 1 root root 28 Nov 30 15:44 imapd.protocol
-rw-r--r-- 1 root root 28 Nov 30 15:44 lmtpd.protocol
-rw-r--r-- 1 root root 28 Nov 30 15:44 pop3d.protocol
#

Configura posizione Posta in arrivo - 10-mail.conf

Diciamo a dovecot di archiviare i messaggi all'interno della directory /var/mail/vhosts e di inserirli ulteriormente in sottodirectory per ciascun dominio e l'utente in quel dominio.

Mails for [email protected] would be stored in /var/mail/vhosts/example.com/someone/

Modifica il file 10-mail.conf

#mail_location = mbox:~/mail:INBOX=/var/mail/%u
mail_location = maildir:/var/mail/vhosts/%d/%n

Crea la directory /var/mail/vhosts

# mkdir /var/mail/vhosts/

Ora crea all'interno di quella directory, crea una directory per ogni dominio su cui desideri ricevere la posta su questo server.

# mkdir /var/mail/vhosts/example.com

Crea un utente per leggere i messaggi

Ora crea un utente con nome e gruppo di vmail e uid e gid di 5000. Sebbene l'uid possa essere qualsiasi numero, scegliamo 5000 per indicare che non è un utente normale. L'opzione "-r" specifica inoltre che questo utente è un utente a livello di sistema e non dispone di alcun accesso.

$ groupadd -g 5000 vmail
$ useradd -r -g vmail -u 5000 vmail -d /var/mail/vhosts -c "virtual mail user"

Assegna a vmail i privilegi completi per leggere/scrivere su /var/mail/vhosts

$ chown -R vmail:vmail /var/mail/vhosts/

Abilita i servizi IMAPS e POP3S - 10-master.conf

Ora dì a dovecot di avviare i servizi imaps e pops. Modifica il file 10-master.conf e abilita le porte per i servizi e specifica ssl su yes.

Lascia commentate le porte per imap e pop poiché non vogliamo ospitare servizi non sicuri.

Per IMAPS:IMAP sicuro

service imap-login {
  inet_listener imap {
    #port = 143
  }
  inet_listener imaps {
    port = 993
    ssl = yes
  }

Per POP3S:POP3 sicuro

service pop3-login {
  inet_listener pop3 {
    #port = 110
  }
  inet_listener pop3s {
    port = 995
    ssl = yes
  }
}

Configura socket lmtp - 10-master.conf

La pagina wiki di dovecot su LMTP mostra un semplice esempio di come configurare il socket lmtp in /etc/dovecot/conf.d/10-master.conf file.

Trova la sezione denominata "service lmtp" e inserisci il percorso del file in cui verrebbe creato il socket unix. Questo stesso percorso è utilizzato da postfix per l'impostazione "trasporto_virtuale".

service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    mode = 0600
        user = postfix
        group = postfix

  }
.....

Il socket deve avere i privilegi di user:group postfix in modo che il processo Postfix possa usarlo.

Configura il socket di autenticazione SASL

Trova la sezione "service auth" e al suo interno aggiungi quanto segue. Se è già presente, modificalo.

service auth {
.....
  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
user=postfix
group=postfix
  }
.....

Configura l'autenticazione

Apri il file conf.d/10-auth.conf e decommenta la riga disable_plaintext_auth assicurandoti che sia impostata su yes. Ciò garantisce che la crittografia TLS/SSL venga sempre utilizzata a scopo di autenticazione.

disable_plaintext_auth = yes

Trova l'impostazione denominata auth_mechanism e decommentala. Questa impostazione specifica il formato in cui verrà fornita la password a dovecot.

auth_mechanisms = plain login

Specifica i file di autenticazione

L'ultima cosa da configurare nel file 10-auth.conf è il database delle password. Di default dovecot è configurato per autenticarsi usando "utenti di sistema" (utenti Linux da /etc/passwd).

Gli diremo di autenticarsi utilizzando un file separato contenente i nomi utente e le password

Trova e commenta la riga auth-system.conf.ext e decommenta la riga auth-passwdfile. Dovrebbe assomigliare a questo

#!include auth-system.conf.ext
#!include auth-sql.conf.ext   
#!include auth-ldap.conf.ext
!include auth-passwdfile.conf.ext
#!include auth-checkpassword.conf.ext
#!include auth-vpopmail.conf.ext
#!include auth-static.conf.ext

Quindi modifica il file auth-passwdfile.conf.ext

/etc/dovecot/conf.d# nano auth-passwdfile.conf.ext

Fallo sembrare qualcosa del genere.

passdb {
  driver = passwd-file
  args = scheme=PLAIN username_format=%u /etc/dovecot/dovecot-users
}

userdb {
  driver = static
#  args = username_format=%u /etc/dovecot/dovecot-users
args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n

  # Default fields that can be overridden by passwd-file
  #default_fields = quota_rule=*:storage=1G

  # Override fields from passwd-file
  #override_fields = home=/home/virtual/%u
}

La sezione passdb dice a dovecot dove cercare il nome utente e le password per autenticarsi. Il file è /etc/dovecot/dovecot-users.

Il formato_utente "%u" indica che l'intero indirizzo email verrà utilizzato come nome utente. Ciò significa che quando si accede da un client di posta elettronica si utilizzerà l'indirizzo e-mail come nome utente sia per smtp che per imap/pop.

Il nome utente e le password sono archiviati in un file chiamato /etc/dovecot/dovecot-users che creeremo nel passaggio successivo

La sezione userdb dice a dovecot dove leggere/scrivere le mail per un dato utente. Stiamo utilizzando una struttura di directory fissa /var/mail/vhosts/%d/%n

Quindi le mail per l'utente [email protected] verrebbero lette dalla seguente directory -

/var/mail/vhosts/example.com/someone/

Crea casella di posta o account utente

Crea un semplice file di testo all'interno di /etc/dovecot/ e riempilo con nome utente e password nel formato user:password. Ecco un esempio

# cat dovecot-users 
[email protected]:{plain}abc123
[email protected]:{MD5-CRYPT}$1$JdyRMcO6$qUwKZT40EVp/oIpVfAEXF1

Genera password usando il comando doveadm in questo modo. L'hash della password restituito dal comando precedente deve essere copiato così com'è nel file dovecot-users.

# doveadm pw -s MD5-CRYPT
Enter new password:
Retype new password:
{MD5-CRYPT}$1$JdyRMcO6$qUwKZT40EVp/oIpVfAEXF1
#

Il file della password può anche contenere informazioni sulla directory e sulle autorizzazioni della cassetta postale del singolo utente. Controlla l'articolo della wiki sul formato passwdfile.

Abilita SSL in dovecot - 10-ssl.conf

Apri il file /etc/dovecot/conf.d/10-ssl.conf e decommenta la riga SSL e impostala su richiesta

# SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>
ssl = required

Assicurati inoltre che ssl_cert e ssl_key puntino a file corretti (questo è per impostazione predefinita)

ssl_cert = </etc/dovecot/dovecot.pem
ssl_key = </etc/dovecot/private/dovecot.pem
&#91;/pre&#93;

If you have your own certificates from a certificate authority then use them here.

<h3>Setup dovecot log files</h3>

Dovecot by default logs to /var/log/syslog which is already a giant warehouse of logs and would make it difficult to search in there. A neater way is to make dovecot log to a separate file that is easier to track. The configuration lies in the file /etc/dovecot/conf.d/10-logging.conf

Open the file and edit the log_path variable and set it to /var/log/dovecot.log
Also note that info_log_path and debug_log_path would use the same to log information and debugging messages respectively. If you want to separate them further then set a log file for each.

[pre]
# Log file to use for error messages. "syslog" logs to syslog,
# /dev/stderr logs to stderr.
log_path = /var/log/dovecot.log

# Log file to use for informational messages. Defaults to log_path.
#info_log_path =
# Log file to use for debug messages. Defaults to info_log_path.
#debug_log_path =

Imposta logrotate

Se modifichiamo i file di registro di Dovecot, è necessario configurare logrotate per garantire che i file di registro vengano creati in parti anziché in un unico file di grandi dimensioni.

$ nano /etc/logrotate.d/dovecot

E riempi quanto segue

/var/log/dovecot*.log {
  missingok
  notifempty
  delaycompress
  sharedscripts
  postrotate
    doveadm log reopen
  endscript
}

Per ulteriori informazioni, controlla la pagina wiki di dovecot sulla registrazione.

Riavvia Dovecot

Buon lavoro. Tutte le configurazioni eseguite. Ora riavvia dovecot

$ sudo service dovecot restart

Test

Ora che hai finito di configurare tutto, è il momento di testare. Usa un client di posta come Thunderbird e configura le connessioni SMTP e IMAP.

Quindi prova a inviare un'e-mail a un altro account come gmail. Se ricevi la posta su gmail, prova a rispondere. Se la posta viene visualizzata nel tuo client di posta, hai finito. Congratulazioni!

Controllo delle porte aperte con netstat

Usa il comando netstat per verificare che i servizi siano attivi e in esecuzione

# netstat -ltnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:993             0.0.0.0:*               LISTEN      28791/dovecot
tcp        0      0 0.0.0.0:995             0.0.0.0:*               LISTEN      28791/dovecot
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      3315/mysqld
tcp        0      0 0.0.0.0:587             0.0.0.0:*               LISTEN      16218/master
tcp        0      0 0.0.0.0:110             0.0.0.0:*               LISTEN      28791/dovecot
tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN      28791/dovecot
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      3337/nginx
tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      16218/master
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      3252/sshd
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      16218/master

Nell'output sopra possiamo vedere che dovecot tiene le porte 993, 995, 110 e 143
Mentre Postfix (master) tiene le porte 587, 465 e 25

Risoluzione dei problemi

1. mail.log vuoto

Sui server Ubuntu il file /var/log/mail.log potrebbe essere completamente vuoto. Ciò accade a causa di problemi di autorizzazione e può essere risolto con i seguenti comandi

# ls -l /var/log/mail.log
-rw-r----- 1 messagebus adm 0 Apr 26  2013 /var/log/mail.log

Il corretto proprietario del file dovrebbe essere syslog. Imposta l'autorizzazione di proprietà corretta con i seguenti comandi -

$ sudo chown syslog.adm /var/log/mail.log
$ sudo chmod 640 /var/log/mail.log

Ora il file mail.log dovrebbe essere popolato con i messaggi corretti per tenere traccia di cosa sta succedendo con il server Postfix.

2. Accesso al relay negato

Quando si inviano e-mail, se il registro del suffisso (/var/log/mail.log) mostra un tale messaggio di errore -

Dec  1 09:57:12 li240-5 postfix/smtpd[25795]: NOQUEUE: reject: RCPT from unknown[122.163.8.12]: 454 4.7.1 <...>: Relay access denied; from=<...> to=<...> proto=ESMTP helo=<&#91;192.168.1.2&#93;>

Assicurati che nel campo smtpd_relay_restrictions (/etc/postfix/main.cf) sia elencato "permit_sasl_authenticated" in modo che gli utenti autenticati tramite SASL possano inviare e-mail utilizzando postfix come server smtp.

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination

3. Errore durante la ricezione della posta

Se i registri di dovecot mostrano un tale messaggio di errore durante la ricezione di e-mail -

Dec 02 18:32:12 lmtp(4412): Fatal: Error reading configuration: Invalid settings: postmaster_address setting not given

Basta modificare /etc/dovecot/conf.d/15-lda.conf e aggiungere un valore per postmaster_address

# Address to use when sending rejection mails.
# Default is [email protected]<your domain>. %d expands to recipient domain.
postmaster_address = [email protected]

Crea record DNS SPF per abilitare la convalida ed evitare lo spam

Prova a inviare un'e-mail a un indirizzo gmail tramite un client di posta come thunderbird e tramite il server smtp postfix e la posta finirebbe nella cartella spam di gmail o potrebbe essere rifiutata del tutto.

Per risolvere questo problema, è necessario impostare i record SPF per il dominio del mittente. Se il server postfix invia e-mail con "da indirizzo" di [email protected], i record DNS TXT di esempio.com devono contenere le informazioni di convalida SPF per indicare che questo il server è autorizzato a inviare e-mail per conto di example.com

Tutto quello che devi fare è modificare le voci della zona del tuo nameserver e aggiungere un record TXT contenente quanto segue

"v=spf1 mx a -all"

La maggior parte dei provider vps come Linode fornisce un'interfaccia pulita per modificare le impostazioni DNS come quelle. Dai un'occhiata al sito Web del progetto OpenSPF per saperne di più.

Controlla i record SPF del tuo dominio con questo semplice comando -

$ dig -t TXT example.com

Note

L'esempio precedente utilizza un file per archiviare account di posta elettronica e password. Questo lo rende comodo quando hai bisogno di pochi account e-mail sul tuo server personale e non li modificherai troppo spesso.

Tuttavia, su larga scala quando si forniscono e-mail a un numero elevato di utenti e si creano/eliminano spesso account, il modo consigliato è archiviare virtual_mailbox_domains e virtual_mailbox_maps in un database e quindi utilizzare alcuni client di database per modificare i record in modo rapido e semplice.

Sia Postfix che Dovecot supportano Mysql/MariaDB.

Controlla le risorse in fondo per link articoli utili su come configurare Postfix e Dovecot in altri modi usando un database.

E poi

1. Puoi installare un client di posta basato sul Web come Roundcube per poter accedere al tuo server dal browser e leggere/inviare e-mail.

2. Alcuni utenti (come me ovviamente) preferiscono utilizzare Gmail di Google come client di posta aggiungendo informazioni sull'account smtp e pop. Google ti consentirebbe rapidamente di inviare e-mail utilizzando questa nuovissima configurazione del server smtp sopra.

Ma gmail non leggerebbe la posta dal server IMAP/POP creato sopra, fino a quando non usiamo un vero certificato da un'autorità di certificazione (CA) in Dovecot.

I certificati SSL delle CA costano denaro, ma puoi ottenere un certificato gratuito da StartCom StartSSL PKI e utilizzarlo con Dovecot e quindi Gmail ti consentirà di leggere la posta da questo server.

3. Inoltre dovresti anche configurare DKIM (Domainkeys Identified Mail) per il tuo dominio, per far rispettare l'autenticità delle email ed essere considerato legittimo dai principali servizi di posta come Gmail.

Risorse

Ecco alcune risorse più utili su come impostare e configurare Postfix e Dovecot in vari modi per ottenere il tipo esatto di server di posta che desideri.

Tutorial Linode sulla configurazione di Postfix e Dovecot con Mysql
https://www.linode.com/docs/email/postfix/email-with-postfix-dovecot-and-mysql

Documentazione dei parametri di configurazione di Postfix da utilizzare in main.cf
http://www.postfix.org/postconf.5.html

Spiegazione dei diversi tipi di domini supportati e utilizzati da Postfix
https://workaround.org/ispmail/squeeze/postfix-domain-types

Dettagli su come Postfix gestisce diversi tipi di domini virtuali
http://www.postfix.org/VIRTUAL_README.html

Documentazione completa di Postfix
http://www.postfix.org/documentation.html


Debian
  1. Come installare Puppet 6.x su Ubuntu 18.04 / Ubuntu 16.04 e Debian 9

  2. Installa Node.js in Ubuntu e Debian

  3. Come installare e configurare Postfix su Ubuntu 20.04

  4. Come installare Spamassassin con Postfix e Dovecot su Ubuntu/Debian Server

  5. Imposta l'inoltro della posta in postfix su Ubuntu o Debian

Installa e configura OpenLDAP su Ubuntu 16.04 / Debian 8

Come installare e configurare Postfix su Debian

Come installare Postfix Mail Server su Ubuntu 20.04

Installa e configura Virtualmin su Ubuntu 20.04 / Debian 10 Server

Installazione del server di posta Postfix su Ubuntu 14.04

Installazione del server di posta Postfix su Ubuntu 20.04