⇤ ← Versione 1 del 27/05/2025 17.09.37
Dimensione: 13344
Commento: 1 bozza
|
Dimensione: 13391
Commento: +info rilasci
|
Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. |
Linea 8: | Linea 8: |
<<Informazioni(rilasci="24.04 22.04 20.04")>> |
Attenzione! Questa è una Pagina di prova. Le informazioni riportate potrebbero essere incomplete, errate e potenzialmente pericolose. Per contribuire alla realizzazione di questa pagina consultare la discussione di riferimento. |
Introduzione
QMAIL è un Mail Transfer Agent (MTA). Questa guida si concentra sull'installazione di netqmail, una versione patchata di Qmail, su Ubuntu 24.04 LTS e versioni successive.
L'installazione di Qmail è un processo complesso e richiede attenzione ai dettagli. Per la maggior parte degli utenti, MTA moderni come Postfix o Exim, disponibili nei repository di Ubuntu, sono alternative più semplici da gestire e mantenere.
Avvertenza importante: 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, DKIM avanzato e TLS robusto richiede sforzi aggiuntivi e patch.
Tutti i comandi che seguono, se non diversamente specificato, dovrebbero essere eseguiti con privilegi di root, preferibilmente usando sudo.
Prerequisiti
- Un sistema Ubuntu 24.04 (o successivo) installato.
- Un Fully Qualified Domain Name (FQDN) configurato per il server. Puoi verificarlo con hostname -f.
Installazione
Installazione delle dipendenze
Avremo bisogno degli strumenti di compilazione e di runit per la gestione dei servizi. ucspi-tcp è un insieme di tool usati da Qmail per i servizi di rete.
sudo apt update sudo apt install -y build-essential runit git
Download e preparazione dei sorgenti
Scaricheremo netqmail-1.06 (l'ultima versione stabile al momento della stesura) e ucspi-tcp.
cd /usr/local/src
Download ucspi-tcp
wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz tar -xzf ucspi-tcp-0.88.tar.gz rm ucspi-tcp-0.88.tar.gz cd ucspi-tcp-0.88
Patch per compatibilità con GCC moderni se necessaria (errno.h) Potrebbe essere necessario modificare conf-cc e conf-ld
echo 'gcc -O2 -include /usr/include/errno.h' > conf-cc sudo make sudo make setup check cd ..
Download netqmail
wget https://qmail.org/netqmail-1.06.tar.gz tar -xzf netqmail-1.06.tar.gz rm netqmail-1.06.tar.gz cd netqmail-1.06
Creazione degli utenti e dei gruppi
Qmail viene eseguito con utenti e gruppi specifici per una maggiore sicurezza.
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 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
Creazione della directory di Qmail e compilazione
sudo mkdir /var/qmail sudo chown qmailq:qmail /var/qmail
All'interno della directory dei sorgenti di netqmail-1.06 (/usr/local/src/netqmail-1.06)
sudo make setup check
Configurazione iniziale
Lo script config (o config-fast) imposta i file di controllo di base.
All'interno della directory dei sorgenti di netqmail-1.06
sudo ./config-fast tuo.host.completo
sostituire tuo.host.completo con il FQDN del tuo server (es. mail.example.com).
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!
È consigliabile usare Maildir come formato di default per le caselle di posta:
echo './Maildir/' | sudo tee /var/qmail/control/defaultdelivery
Creare la directory skeleton per Maildir se non esiste (qmail-local lo farà per i nuovi utenti, ma per l'utente alias è utile averla):
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
Qmail usa file .qmail-nomeutente nella home directory dell'utente alias (/var/qmail/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:
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:
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:
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:
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:
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 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 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
Controllare la coda di Qmail, digitare nel terminale i seguenti comandi:
sudo qmail-qstat sudo qmail-qread
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 Life with Qmail. Anche se alcune parti potrebbero essere datate, i concetti fondamentali e molte patch sono ancora validi.
Note:
Questa bozza assume che tu voglia che runit gestisca direttamente i servizi Qmail.
I percorsi e i nomi dei file per runit (/etc/sv/, /etc/service/) sono standard.
La gestione dei log con svlogd è una delle opzioni fornite da runit; multilog di DJB è un'altra alternativa popolare.
L'aggiornamento da un sistema SysVinit esistente è complesso e va oltre questa guida. È consigliabile una nuova installazione.