## page was renamed from Server/QmailServer
## page was renamed from GuidaQmailServer
#format wiki
#LANGUAGE it
<
>
<>
<>
<>
= Introduzione =
Questa guida è dedicata a '''Qmail''', un ''Mail Transfer Agent (MTA)'' storico, e in particolare all'installazione della sua versione netqmail (arricchita da patch comunitarie) su sistemi '''Ubuntu'''.
{{{#!wiki warning
Qmail non riceve nuove funzionalità da molti anni. Sebbene netqmail includa patch di sicurezza e compatibilità, considerare attentamente le implicazioni prima di usarlo in produzione. L'integrazione con standard moderni come DMARC (Domain-based Message Authentication Reporting and Conformance), DKIM (!DomainKeys Identified Mail) avanzato e TLS robusto richiede sforzi aggiuntivi e patch.
}}}
L'installazione di Qmail è un processo notoriamente complesso che esige grande attenzione ai dettagli. Per la maggior parte degli utenti, alternative moderne e più semplici da gestire, come '''Postfix''' o '''Exim''' (entrambi facilmente reperibili nei repository ufficiali di '''Ubuntu'''), sono fortemente consigliate, buone alternative semplici da gestire e mantenere.
= Prerequisiti =
Qmail si affida a questo '''F'''ully '''Q'''ualified '''D'''omain '''N'''ame configurato e risolvibile (es. `mail.tuodominio.com~) per identificarsi nella rete e per gestire la posta dei domini locali.
Verificare se corrisponde, digitando nel [[AmministrazioneSistema/Terminale|terminale]] il comando:{{{
hostname -f
}}} se non riporta l'FQDN corretto (ad esempio, visualizza "localhost", un nome incompleto, o un nome errato), la configurazione di '''Qmail''' fallirà e potrebbe non riuscire o funzionare in modo anomalo, il server non opererà come previsto.
{{{#!wiki note
Configurazione di base: Assicurarsi che il nome host del sistema '''Ubuntu''' sia impostato correttamente (tipicamente in `/etc/hostname` e `/etc/hosts`) in modo che restituisca l'FQDN desiderato.
}}}
= Installazione =
{{{#!wiki important
Tutti i comandi che seguono, se non diversamente specificato, dovrebbero preferibilmente essere eseguiti con [[AmministrazioneSistema/PrivilegiDiAmministrazione/Sudo|privilegi di root]].
}}}
Questa sezione guida attraverso i passaggi necessari per scaricare, compilare e installare `netqmail` e le sue dipendenze. È un processo suddiviso in più fasi che richiede attenzione.
== Installazione delle dipendenze di base ==
Prima di iniziare con '''Qmail''', assicurarsi che il sistema disponga degli strumenti necessari per la compilazione e della utility `runit` che userà per la gestione dei servizi di Qmail.
0. [[AmministrazioneSistema/InstallareProgrammi/Apt#update|Aggiornare la lista dei pacchetti]].
0. [[AmministrazioneSistema/InstallareProgrammi|Installare]] i pacchetti [[apt://build-essential|build-essential]], [[apt://runit|runit]] e [[apt://git|git]].
##'''build-essential''': Installa i pacchetti fondamentali per la compilazione (come GCC, make).
##runit: Un sistema di inizializzazione e supervisione dei servizi leggero, ideale per Qmail.
== Download e preparazione dei sorgenti ==
Scaricare i sorgenti di `ucspi-tcp` (è un insieme di tool utility di rete usate da '''Qmail''') e di '''netqmail''' stesso. Collocarli in questa cartella comune per i sorgenti compilati manualmente, di sistema `/usr/local/src`.
Collocarsi nella cartella, digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
cd /usr/local/src
}}} e scaricare i sorgenti seguendo i paragrafi seguenti.
=== ucspi-tcp ===
0. Scaricare `ucspi-tcp` (versione 0.88 al momento della scrittura). Digitare nel [[AmministrazioneSistema/Terminale|terminale]] i seguenti comandi:{{{
wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
tar -xzf ucspi-tcp-0.88.tar.gz
}}} dopo l'estrazione rimuovere l'archivio.
0. Localizzarsi nella cartella appena decompressata. Digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
cd ucspi-tcp-0.88
}}}
0. Applicare una patch comune per la compatibilità con versioni recenti di GCC, questo previene errori relativi a 'errno' durante la compilazione:{{{
echo 'gcc -O2 -include /usr/include/errno.h' | sudo tee conf-cc > /dev/null
}}}
0. Compilare e installare `ucspi-tcp`. Digitare nel [[AmministrazioneSistema/Terminale|terminale]] i seguenti comandi:{{{
make
sudo make setup check
cd ..
}}}
## Torna a /usr/local/src
{{{#!wiki note
'make' da solo compila, 'make setup check' installa e verifica
}}}
=== NetQmail ===
0. Scaricare `netqmail` (versione 1.06 al momento della scrittura). Digitare nel [[AmministrazioneSistema/Terminale|terminale]] i seguenti comandi:{{{
wget https://qmail.org/netqmail-1.06.tar.gz
tar -xzf netqmail-1.06.tar.gz
}}} dopo l'estrazione rimuovere l'archivio.
0. Localizzarsi nella cartella appena decompressata. Digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
cd netqmail-1.06
}}}
{{{#!wiki note
Il file `netqmail-1.06.tar.gz` è un pacchetto già "collazionato" che include Qmail originale e le patch di netqmail. Lo script `./collate.sh` menzionato in guide più datate (per netqmail-1.05) non è quindi necessario se si usa questo archivio, poiché è già un pacchetto consolidato. Se si parte dai sorgenti originali di Qmail e da un set di patch separato, allora collate.sh (o uno script simile) sarebbe usato per applicarle.
}}}
= Configurazione =
== Creazione degli utenti e dei gruppi ==
Per ragioni di sicurezza, '''Qmail''' opera utilizzando una serie di utenti e gruppi specifici con [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi]] limitati, seguendo il principio della separazione dei privilegi.
0. Aggiungere i gruppi specifici nofiles al sistema, digitare nel [[AmministrazioneSistema/Terminale|terminale]] i seguenti comandi:{{{
sudo groupadd nofiles
sudo useradd -g nofiles -d /var/qmail/alias -s /usr/sbin/nologin alias
sudo useradd -g nofiles -d /var/qmail -s /usr/sbin/nologin qmaild
sudo useradd -g nofiles -d /var/qmail -s /usr/sbin/nologin qmaill
sudo useradd -g nofiles -d /var/qmail -s /usr/sbin/nologin qmailp
}}}
0. Aggiungere i gruppi specifici qmail al sistema, digitare nel [[AmministrazioneSistema/Terminale|terminale]] i seguenti comandi:{{{
sudo groupadd qmail
sudo useradd -g qmail -d /var/qmail -s /usr/sbin/nologin qmailq
sudo useradd -g qmail -d /var/qmail -s /usr/sbin/nologin qmailr
sudo useradd -g qmail -d /var/qmail -s /usr/sbin/nologin qmails
}}}
{{{#!wiki note
-s /usr/sbin/nologin: Imposta una shell non interattiva per questi utenti di servizio.
}}}
== Creazione della directory di Qmail e compilazione ==
Ora, installati i sorgenti:
0. Creare la directory base per Qmail. Digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
sudo mkdir /var/qmail
}}} e procedere con la compilazione e installazione.
0. Assegnare la proprietà della directory principale di '''qmail''' all'utente e gruppo '''qmailq/qmail'''. Digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
sudo chown qmailq:qmail /var/qmail
}}}
0. Assicurarsi di essere ancora nella directory dei sorgenti di netqmail-1.06, digitando nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
cd /usr/local/src/netqmail-1.06
}}} e compilare ed installare il setup con il comando:{{{
sudo make setup check
}}}
Questo comando compila Qmail e lo installa in /var/qmail, configurando anche i permessi iniziali. Verificare l'output per eventuali errori durante la compilazione.
== Configurazione iniziale dei file di controllo ==
Lo script `config-fast` (o config) imposta i file di controllo fondamentali di '''Qmail''', basandosi sul FQDN del server.
0. Assicurarsi di essere ancora nella directory dei sorgenti di '''netqmail-1.06''', digitando nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
cd /usr/local/src/netqmail-1.06
}}}
0. Successivamente, digitare:{{{
sudo ./config-fast tuo.server.fqdn
}}} sostituisci 'tuo.server.fqdn' con il vero Fully Qualified Domain Name del tuo server
0. Si dovrebbe vedere un output simile a:{{{
Your fully qualified host name is tuo.host.completo.
Putting tuo.host.completo into control/me...
Putting example.com into control/defaultdomain... (if your FQDN was mail.example.com)
Putting example.com into control/plusdomain...
Now qmail will refuse to accept SMTP messages except to tuo.host.completo.
Make sure to change rcpthosts if you add hosts to locals or virtualdomains!
}}}
{{{#!wiki note
È consigliabile usare '''Maildir''' come formato di default per le caselle di posta, in quanto più robusto e performante rispetto al tradizionale formato mbox.
}}}
0. Digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
echo './Maildir/' | sudo tee /var/qmail/control/defaultdelivery
}}}
##(La guida originale menzionava Mailbox per il formato mbox. Maildir è generalmente preferito per la sua robustezza).
0. Preparare la struttura '''Maildir''' per l'utente alias (utile per gli alias di sistema come postmaster):{{{
sudo mkdir -p /var/qmail/alias/Maildir/{cur,new,tmp}
sudo chmod -R 700 /var/qmail/alias/Maildir
sudo chown -R alias:nofiles /var/qmail/alias/Maildir
}}}
== Configurazione degli alias di sistema fondamentali ==
'''Qmail''' gestisce gli alias tramite file speciali chiamati `.qmail-nomeutente` situati nella directory home dell'utente alias (in questo caso, /var/qmail/alias/).
{{{
Indirizza le email per postmaster, mailer-daemon e root a un utente reale del sistema.
IMPORTANTE: Sostituisci 'nomeutenteadmin' con un utente esistente che gestirà queste email,
o con un indirizzo email completo (es. '&admin@tuodominio.com') se Qmail deve inoltrarle esternamente.
Per la consegna locale a un utente di sistema: '&nomeutenteadmin'
Per la consegna a una casella gestita da '''Qmail''' (es. alias/Maildir): './Maildir/' (ma qui l'utente è 'alias')
echo '&nomeutenteadmin' | sudo tee /var/qmail/alias/.qmail-postmaster > /dev/null
echo '&nomeutenteadmin' | sudo tee /var/qmail/alias/.qmail-mailer-daemon > /dev/null
echo '&nomeutenteadmin' | sudo tee /var/qmail/alias/.qmail-root > /dev/null
sudo chmod 644 /var/qmail/alias/.qmail-postmaster /var/qmail/alias/.qmail-mailer-daemon /var/qmail/alias/.qmail-root
Alias di default (catch-all): gestisce le email indirizzate a utenti locali inesistenti.
Anche qui, sostituisci 'nomeutenteadmin' o usa un'altra strategia di consegna.
echo '&nomeutenteadmin' | sudo tee /var/qmail/alias/.qmail-default > /dev/null
sudo chmod 644 /var/qmail/alias/.qmail-default
}}}
== Configurazione degli alias ==
Inoltrare mail per postmaster, mailer-daemon, root all'utente reale 'adminuser' (sostituirlo!)
{{{
echo '&adminuser' | sudo tee /var/qmail/alias/.qmail-postmaster
echo '&adminuser' | sudo tee /var/qmail/alias/.qmail-mailer-daemon
echo '&adminuser' | sudo tee /var/qmail/alias/.qmail-root
sudo chmod 644 /var/qmail/alias/.qmail-postmaster /var/qmail/alias/.qmail-mailer-daemon /var/qmail/alias/.qmail-root
}}}
Catch-all per email a utenti inesistenti (opzionale, potrebbe andare a postmaster)
{{{
echo '&adminuser' | sudo tee /var/qmail/alias/.qmail-default
sudo chmod 644 /var/qmail/alias/.qmail-default
}}} sostituire `adminuser` con un utente di sistema reale che riceverà queste mail, oppure indirizzale a una casella specifica (es. &localmailbox).
= Configurazione dei servizi con Runit =
Qmail non si daemonizza da solo. Useremo runit per supervisionare i processi di Qmail.
== Preparazione dello script di avvio qmail-start ==
Copiare lo script di avvio fornito da Qmail.
{{{
sudo cp /var/qmail/boot/home /var/qmail/rc
}}} assicurarsi che `/var/qmail/rc` sia eseguibile
{{{
sudo chmod 755 /var/qmail/rc
}}} controlla il file `/var/qmail/rc`. NON deve terminare con &. runit gestirà l'esecuzione in background. Dovrebbe assomigliare a:{{{
#!/bin/sh
Using splogger to send the log through stderr to runit's logger.
exec env - PATH="/var/qmail/bin:$PATH"
qmail-start "cat /var/qmail/control/defaultdelivery" splogger qmail
}}}
== Creazione dei servizi Runit ==
Creeremo i servizi per qmail-send (il gestore della coda) e qmail-smtpd (il server SMTP).
=== a) Servizio qmail-send ===
{{{
sudo mkdir -p /etc/sv/qmail-send/log
}}}
Creare /etc/sv/qmail-send/run:{{{
#!/bin/sh
exec /var/qmail/rc
}}} renderlo eseguibile:{{{
sudo chmod +x /etc/sv/qmail-send/run
}}}
Creare /etc/sv/qmail-send/log/run per la gestione dei log:{{{
#!/bin/sh
Log a /var/log/qmail/qmail-send, crea la directory se non esiste
sudo mkdir -p /var/log/qmail/qmail-send
sudo chown qmaill:nofiles /var/log/qmail/qmail-send
exec /usr/bin/svlogd -tt /var/log/qmail/qmail-send
}}} renderlo eseguibile:{{{
sudo chmod +x /etc/sv/qmail-send/log/run
}}}
=== b) Servizio qmail-smtpd (SMTP sulla porta 25) ===
{{{
sudo mkdir -p /etc/sv/qmail-smtpd/log
}}}
Creare /etc/sv/qmail-smtpd/run:{{{
#!/bin/sh
PATH="/var/qmail/bin:/usr/local/bin:
𝑃𝐴𝑇𝐻"𝑄𝑀𝐴𝐼𝐿𝐷𝑈𝐼𝐷=
PATH"QMAILDUID=
(id -u qmaild)
NOFILESGID=
(𝑖𝑑 −𝑔 𝑛𝑜𝑓𝑖𝑙𝑒𝑠)
𝑀𝐴𝑋𝑆𝑀𝑇𝑃𝐷=
(id−gnofiles)MAXSMTPD=
(cat /var/qmail/control/concurrencyincoming 2>/dev/null || echo 20)
HOSTNAME=$(cat /var/qmail/control/me)
Se non ha un tcp.smtp.cdb, commentare -x ...
Vedere sotto per la creazione di tcp.smtp.cdb
exec /usr/local/bin/tcpserver -vR -l "
𝐻
𝑂
𝑆
𝑇
𝑁
𝐴
𝑀
𝐸
"
−
𝑥
/
𝑒
𝑡
𝑐
/
𝑡
𝑐
𝑝
.
𝑠
𝑚
𝑡
𝑝
.
𝑐
𝑑
𝑏
−𝑐"
HOSTNAME" −x/etc/tcp.smtp.cdb−c"
MAXSMTPD"-u "
𝑄𝑀𝐴𝐼𝐿𝐷𝑈𝐼𝐷"−𝑔"
QMAILDUID"−g"
NOFILESGID" 0 smtp
/var/qmail/bin/qmail-smtpd 2>&1
}}} renderlo eseguibile:{{{
sudo chmod +x /etc/sv/qmail-smtpd/run
}}}
Creare `/etc/sv/qmail-smtpd/log/run`:{{{
#!/bin/sh
Log a /var/log/qmail/qmail-smtpd, crea la directory se non esiste
sudo mkdir -p /var/log/qmail/qmail-smtpd
sudo chown qmaill:nofiles /var/log/qmail/qmail-smtpd
exec /usr/bin/svlogd -tt /var/log/qmail/qmail-smtpd
}}} renderlo eseguibile:
{{{
sudo chmod +x /etc/sv/qmail-smtpd/log/run
}}}
Impostare un valore per concurrencyincoming:{{{
echo 30 | sudo tee /var/qmail/control/concurrencyincoming
}}}
=== c) Creazione di tcp.smtp.cdb (Regole di accesso SMTP) ===
Questo file controlla chi può connettersi al server SMTP.
Creare `/etc/tcp.smtp`:{{{
Esempio: Permetti a tutti di connettersi
127.0.0.1:allow,RELAYCLIENT=""
:allow
Per un server di relay aperto (NON RACCOMANDATO SENZA AUTENTICAZIONE):
:allow,RELAYCLIENT=""
Per un server che accetta mail solo per i domini locali (più sicuro come default):
127.0.0.1:allow,RELAYCLIENT=""
}}}
Per reti locali fidate, aggiungere righe come:{{{
192.168.1.:allow,RELAYCLIENT=""
:allow
}}}
Compilare il file CDB:{{{
sudo tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
sudo chmod 644 /etc/tcp.smtp.cdb /etc/tcp.smtp
}}}
== Abilitazione dei servizi Runit ==
Collegare le directory dei servizi alla cartella `/etc/service/` per farle gestire da '''runit'''.
{{{
sudo ln -s /etc/sv/qmail-send /etc/service/
sudo ln -s /etc/sv/qmail-smtpd /etc/service/
}}}
Attendere qualche secondo e verificare lo stato, digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
sudo sv status qmail-send qmail-smtpd
}}} si dovrebbe vedere:{{{
run: qmail-send: (pid XXXX) Ys e run: qmail-smtpd: (pid YYYY) Zs.
}}}
= Configurazione del Firewall (UFW) =
Se si utilizza `ufw`, aprire le porte necessarie, digitare nel [[AmministrazioneSistema/Terminale|terminale]] i seguenti comandi:
* '''SMTP''': {{{
sudo ufw allow 25/tcp
}}}
* Submission (richiede configurazione aggiuntiva per TLS e AUTH):{{{
sudo ufw allow 587/tcp
}}}
* SMTPS (obsoleto, ma a volte usato):{{{
sudo ufw allow 465/tcp
}}}
== Attivazione Ufw ==
{{{
sudo ufw enable
}}}
== Verifica Firewall ==
{{{
sudo ufw status
}}}
= Test base =
0. Controllare la coda di Qmail, digitare nel [[AmministrazioneSistema/Terminale|terminale]] i seguenti comandi:{{{
sudo qmail-qstat
sudo qmail-qread
}}}
0. Inviare una mail di test usando `telnet` (se c'è un client telnet installato):{{{
telnet localhost 25
EHLO test.example.com
MAIL FROM:test@example.com
RCPT TO:postmaster@tuo.host.completo # Usa l'FQDN configurato
DATA
Subject: Test email
This is a test email from Qmail.
.
QUIT
}}} controllare i log in `/var/log/qmail/qmail-send/` e `/var/log/qmail/qmail-smtpd/`, e la casella di posta dell'utente a cui è stato inoltrato postmaster.
= Passi successivi e considerazioni importanti =
Questa guida copre solo l'installazione di base. Per un server di posta funzionante in un ambiente moderno, è da considerare:
* '''TLS/SSL''': Configurare sslserver (da ucspi-ssl o ucspi-tcp patchato) al posto di tcpserver per le connessioni SMTP (specialmente per la porta 587 Submission). Richiede la generazione e l'installazione di certificati SSL/TLS.
* '''Autenticazione SMTP (SMTP AUTH)''': Necessaria se si vuole che gli utenti inviino mail tramite il server da client esterni. Richiede ''patch'' aggiuntive a '''Qmail''' e un meccanismo di autenticazione (es. checkpassword, authdaemond).
* '''POP3/IMAP''': Qmail gestisce solo l'invio e la ricezione. Per leggere la posta, c'è bisogno di un `server POP3/IMAP` come Dovecot o Courier.
* '''Filtro Antispam/Antivirus''': Integrazione con SpamAssassin, ClamAV, ecc. (es. tramite qmail-scanner o simscan).
* '''SPF, DKIM, DMARC''': Configurazione di questi record DNS e l'integrazione di software per la firma DKIM (es. qmail-dkim o opendkim via milter se patchato) sono essenziali per la deliverability.
* '''Gestione Utenti''': Per gestire caselle di posta virtuali e utenti, potrebbe aver bisogno di strumenti come vpopmail o qmailadmin.
* '''Log Rotation''': Configurare 'logrotate' per i log di Qmail in `/var/log/qmail/`.
La risorsa più completa per Qmail è da tempo [[http://lifewithqmail.org/|Life with Qmail]]. Anche se alcune parti potrebbero essere datate, i concetti fondamentali e molte patch sono ancora validi.
Note:
{{{#!wiki note
Questa bozza assume che tu voglia che runit gestisca direttamente i servizi Qmail.
}}}
{{{#!wiki note
I percorsi e i nomi dei file per runit (/etc/sv/, /etc/service/) sono standard.
}}}
{{{#!wiki note
La gestione dei log con svlogd è una delle opzioni fornite da runit; multilog di DJB è un'altra alternativa popolare.
}}}
{{{#!wiki note
L'aggiornamento da un sistema '''!SysVinit''' esistente è complesso e va oltre questa guida. È consigliabile una nuova installazione.
}}}
= Risoluzione problemi =
L'installazione e la configurazione di '''Qmail''' possono presentare delle sfide. Ecco alcuni problemi comuni e come affrontarli.
== Errori durante la compilazione di ucpi-tcp o netqmail ==
=== Relativi a `errno` o `error.h` ===
0. Assicurarsi di aver installato [[apt://build-essential|build-essential]].
0. Verificare che la patch, sia stata applicata correttamente, digit5are nel [èAmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
echo 'gcc -O2 -include /usr/include/errno.h' | sudo tee conf-cc > /dev/null
}}} prima di lanciare `make` o `make setup check` con [[AmministrazioneSistema/PrivilegiDiAmministrazione/Sudo|sudo]].
0. Leggere attentamente l'output del compilatore. Spesso indica il file e la riga che causano il problema.
== 2. I servizi di Qmail non partono o si arrestano ==
Problema: sudo sv status qmail-send (o qmail-smtpd) mostra down o non appare.
Possibili Cause e Controlli:
Link simbolici Runit: Verifica che i link simbolici in /etc/service/ puntino correttamente alle directory dei servizi in /etc/sv/ (es. sudo ln -s /etc/sv/qmail-send /etc/service/).
Script run non eseguibile: Assicurati che gli script /etc/sv/qmail-send/run e /etc/sv/qmail-smtpd/run (e i loro script di log) siano eseguibili (sudo chmod +x /etc/sv/SERVIZIO/run).
Errori negli script run: Controlla la sintassi e i percorsi negli script run. Un errore qui può impedire l'avvio.
Permessi su /var/qmail/rc: Lo script /var/qmail/rc deve essere eseguibile (sudo chmod 755 /var/qmail/rc).
Log di Runit: Controlla i log del supervisore per il servizio specifico. Se hai configurato svlogd come nella guida, i log per qmail-send saranno in /var/log/qmail/qmail-send/current (e per qmail-smtpd in /var/log/qmail/qmail-smtpd/current). Questi log spesso contengono messaggi di errore specifici.
splogger qmail in /var/qmail/rc: Questo è cruciale. Se manca, qmail-send potrebbe partire ma i suoi log non verranno catturati da svlogd.
UID/GID errati: Se hai specificato UID/GID errati per qmaild o nofiles nello script run di qmail-smtpd, tcpserver potrebbe non avviarsi.
== 3. qmail-smtpd non accetta connessioni (es. telnet localhost 25 fallisce) ==
Problema: Impossibile connettersi alla porta 25.
Possibili Cause e Controlli:
Servizio non attivo: Verifica con sudo sv status qmail-smtpd.
Firewall: Controlla che ufw (o un altro firewall) permetta connessioni sulla porta 25 (sudo ufw status).
Porta già in uso: Un altro MTA (es. Postfix, Exim, sendmail) potrebbe essere in esecuzione e occupare la porta 25.
sudo netstat -tulnp | grep :25
Use code with caution.
Bash
Se un altro servizio è in ascolto, devi fermarlo e disabilitarlo (es. sudo systemctl stop postfix; sudo systemctl disable postfix).
Errore in tcpserver: Controlla lo script /etc/sv/qmail-smtpd/run.
L'FQDN specificato con -l "$HOSTNAME" è corretto e risolvibile?
Il file /etc/tcp.smtp.cdb esiste e ha i permessi corretti? Prova a commentare temporaneamente -x /etc/tcp.smtp.cdb per vedere se il problema è lì.
Log di qmail-smtpd: Controlla /var/log/qmail/qmail-smtpd/current.
== 4. Email rifiutate con "Sorry, that domain isn't in my list of allowed rcpthosts" ==
Problema: Qmail rifiuta email per domini che dovrebbe gestire.
Possibili Cause e Controlli:
control/rcpthosts: Questo file deve contenere tutti i domini per i quali Qmail deve accettare posta direttamente. Se il file è vuoto, Qmail accetta posta solo per i domini elencati in control/locals.
control/locals: Questo file elenca i domini considerati "locali". Le mail per questi domini sono generalmente gestite da qmail-lspawn che consegna a utenti di sistema o tramite file .qmail.
control/virtualdomains: Se usi domini virtuali, devono essere elencati qui. Ogni riga può essere dominio:utente-base o solo dominio (se usi users/assign).
Mancanza del file control/rcpthosts: Se questo file non esiste, qmail si rifiuterà di accettare posta in entrata via SMTP per motivi di sicurezza (anti-relay). Lo script config-fast dovrebbe crearlo.
== 5. Email rifiutate con "Sorry, no mailbox here by that name" ==
Problema: Qmail accetta il dominio ma non l'utente.
Possibili Cause e Controlli:
Utente di sistema non esistente: Se il dominio è in control/locals, l'utente deve esistere nel sistema.
File .qmail-default mancante o errato: Per i domini in control/locals, se non c'è un file .qmail-utente, qmail-local cerca un .qmail-default nella home dell'utente. Se anche questo manca, o se la consegna specificata fallisce, la mail può essere rifiutata o rimbalzare.
Configurazione domini virtuali errata: Se usi vpopmail o un sistema simile, la mappatura utente-dominio potrebbe essere errata. Per la gestione nativa con users/assign, assicurati che l'utente sia mappato correttamente.
Permessi sui file .qmail*: Devono essere leggibili dall'utente con cui viene eseguita la consegna locale (tipicamente l'utente stesso, o qmaill in certi contesti). Non devono essere scrivibili da altri.
Permessi sulla Maildir: La directory ~/Maildir/ (o ~/Mailbox) e le sue sottodirectory devono avere i permessi corretti per l'utente proprietario.
== 6. Email inviate ma non arrivano a destinazione (o finiscono in coda) ==
Problema: Le mail escono dalla coda di Qmail lentamente o per niente.
Possibili Cause e Controlli:
DNS Resolution: Il server Qmail deve poter risolvere i record MX dei domini destinatari.
dig mx google.com
Use code with caution.
Bash
Se fallisce, configura correttamente i resolver DNS in /etc/resolv.conf.
qmail-send non funziona correttamente: Controlla i log di qmail-send e lo stato del servizio.
Coda piena o corrotta: In rari casi, la coda può danneggiarsi. Controlla lo stato con sudo qmail-qstat e leggi i messaggi con sudo qmail-qread.
Blacklist: Il tuo IP potrebbe essere in una blacklist.
Configurazione control/concurrencyremote: Se questo valore è troppo basso, Qmail limiterà il numero di invii simultanei.
Problemi di rete: Verifica la connettività di rete generale del server.
== 7. Problemi con la consegna locale (Maildir/Mailbox) ==
Problema: Le mail vengono accettate ma non appaiono nella casella dell'utente.
Possibili Cause e Controlli:
control/defaultdelivery: Verifica cosa c'è scritto. Se è ./Maildir/, Qmail proverà a consegnare in formato Maildir. Se è vuoto o specifica un programma, verrà usato quello.
Permessi sulla Maildir/Mailbox: L'utente destinatario deve avere i permessi di scrittura sulla propria Maildir (e sottodirectory tmp, new, cur) o sul file Mailbox. Per Maildir, il proprietario dovrebbe essere l'utente stesso, con permessi 700 per la directory principale Maildir.
Errori nei file .qmail-utente: Una sintassi errata o un comando fallito in un file .qmail possono causare il fallimento della consegna. In tal caso, Qmail proverà con .qmail-default e poi, se fallisce, potrebbe rimbalzare o inviare a postmaster.
== Strumenti di Diagnosi Utili ==
sudo qmail-qstat: Mostra il numero di messaggi in coda.
sudo qmail-qread: Mostra un riassunto dei messaggi in coda.
sudo tail -f /var/log/qmail/SERVIZIO/current: Per visualizzare i log in tempo reale (sostituisci SERVIZIO con qmail-send, qmail-smtpd, ecc.).
telnet altroserver.com 25: Per testare la connettività SMTP in uscita.
dig mx tuodominio.com: Per verificare i record MX del tuo dominio.
checkservices (da ucspi-tcp, se installato il pacchetto completo): sudo /usr/local/bin/checkservices può dare indicazioni se i servizi qmail sono in ascolto come previsto.
Consiglio Generale: Sii metodico. Controlla i log prima di tutto. Fai una modifica alla volta e testa. La maggior parte dei problemi di Qmail deriva da permessi errati, file di controllo mal configurati o errori di battitura.
----
CategoryHomepage CategoryNuoviDocumenti