netqmail-1.06 - basic setup

10 settembre 2024 by Roberto Puzzanghera 30 commenti

Changelog

  • 10 settembre 2024: i sorgenti di netqmail sono ora compatibili con le nuove versioni del compilatore gcc.


Innanzitutto è necessario eliminare le MTA esistenti come ad esempio sendmail:

rm /usr/sbin/sendmail

Per gli utenti Slackware:

removepkg /var/log/packages/sendmail*

Creiamo gli utenti e i gruppi:

groupadd nofiles
useradd -g nofiles -d /var/qmail/alias alias
useradd -g nofiles -d /var/qmail qmaild
useradd -g nofiles -d /var/qmail qmaill
useradd -g nofiles -d /var/qmail qmailp
groupadd qmail
useradd -g qmail -d /var/qmail qmailq
useradd -g qmail -d /var/qmail qmailr
useradd -g qmail -d /var/qmail qmails

I sorgenti di netqmail-1.06 non sono compatibili con le nuove versioni di gcc. Io ho risolto tutti gli errori e i warning in fase di compilazione, almeno fino alla versione 14.2 di gcc, e caricato il risultato finale nel mio spazio github. Scarichiamo quindi da github e compiliamo netqmail:

cd /usr/local/src
git clone -b netqmail-1.06 git@github.com:sagredo-dev/qmail.git
cd qmail
make setup check

qmail sarà patchato, ricompilato e configurato solo dopo che vpopmail sarà installato.

Creiamo un link simbolico al programma sendmail

ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

Aggiungiamo la cartella bin al PATH e man al MANPATH

PATH=$PATH:/var/qmail/bin
export PATH
MANPATH=$MANPATH:/var/qmail/man
export MANPATH

Ricordiamoci di salvare i nuovi PATH e MANPATH nel profile.

Commenti

Ridondanza e Multi MX record

Buonasera Roberto,

Vedo spesso una configurazione DNS con più record MX come questo ad esempio

IN MX 10 mx3.mail.ovh.net.
IN MX 1 mx4.mail.ovh.net.

dove per lo stesso dominio impostano 2 mx server.

Supponendo che ho a disposizione 2 vps con la tua guida come si può imbastire un sistema di ridondanza che se non funziona (in questo esempio) l'mx4 interviene l'mx3 che ha un priorità più bassa.

Spero che questa domanda possa essere interessante sia per te che per altri utenti della tua fantastica guida.

Grazie
Gabriele

Rispondi |

Ridondanza e Multi MX record

Ciao Gabriele, è necessario fare la replicazione sia delle caselle di posta (https://wiki.dovecot.org/Replication) che del database utenti (https://mariadb.com/kb/en/setting-up-replication/) oltre che provvedere a un rsync delle cartelle control e users.

PS il database magari potrebbe vivere in un virtual server separato ed essere chiamato da entrambi gli mx...

Rispondi |

Ridondanza e Multi MX record

Grazie mille delle indicazioni,

Da quello che ho letto in rete il failover lo gestisce automaticamente il record MX o meglio il server smtp che ha in carico l'invio della mail o sbaglio?

Grazie

Rispondi |

Ridondanza e Multi MX record

Cosa intendi per gestire il failover? Prendere in carico tutto il traffico? In quel caso si

Rispondi |

delivery 54: deferral: Unable_to_chdir_to_maildir._(#4.2.1)/

Buongiorno Roberto,

nel log send ho l'errore in oggetto i permessi sono tutti uguali drwx------ 3 vpopmail vchkpw 4096 22 mar 12.35 info

Quale può essere il problema, non credo sia realmente un probelma di permessi.
Grazie

Rispondi |

delivery 54: deferral: Unable_to_chdir_to_maildir._(#4.2.1)/

Stai usando dovecot lda? Ricontrolla anche li che abbia i permessi di vpopmail nel file master (credo)

Rispondi |

delivery 54: deferral: Unable_to_chdir_to_maildir._(#4.2.1)/

Ecco il risultato di dovecot -n

Per nostre necessità ho continuato ad usare il driver vpopmail (come ti accennavo sto ripristinando una macchina dopo l'incendio di Strasburgo quindi spero di recuperare la directory domain)

# 2.3.10 (0da0eff44): /etc/dovecot/dovecot.conf
# OS: Linux 5.10.0-4-cloud-amd64 x86_64 Debian bullseye/sid
# Hostname: vps-.vps.ovh.net.novalocal
auth_socket_path = /var/run/dovecot/auth-userdb
auth_verbose = yes
base_dir = /run/dovecot
default_process_limit = 200
first_valid_gid = 89
first_valid_uid = 89
last_valid_gid = 89
last_valid_uid = 89
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
listen = *
log_path = /var/log/dovecot/dovecot.log
mail_access_groups = 89
mail_gid = 89
mail_location = maildir:~/Maildir
mail_plugins = " quota"
mail_privileged_group = 89
mail_uid = 89
maildir_broken_filename_sizes = yes
namespace inbox {
inbox = yes
location =
mailbox Drafts {
auto = subscribe
special_use = \Drafts
}
mailbox Junk {
auto = subscribe
autoexpunge = 60 days
special_use = \Junk
}
mailbox Sent {
auto = subscribe
special_use = \Sent
}
mailbox "Sent Messages" {
special_use = \Sent
}
mailbox Trash {
auto = subscribe
special_use = \Trash
}
prefix =
}
passdb {
args = webmail=xx xx xx xx
driver = vpopmail
}
plugin {
quota = maildir::
quota_warning = storage=95%% quota-warning 95 %u
quota_warning2 = storage=80%% quota-warning 80 %u
}
protocols = imap pop3
service auth-worker {
unix_listener auth-worker {
user = vpopmail
}
user = vpopmail
}
service auth {
unix_listener auth-userdb {
group = vchkpw
mode = 0666
user = vpopmail
}
user = vpopmail
}
service stats {
unix_listener stats-reader {
group = vchkpw
mode = 0660
user = vpopmail
}
unix_listener stats-writer {
group = vchkpw
mode = 0660
user = vpopmail
}
}
ssl_cert = </etc/ssl/certs/fullchain.pem
ssl_dh = # hidden, use -P to show it
ssl_key = # hidden, use -P to show it
submission_host = 0.0.0.0:25
userdb {
args = quota_template=quota_rule=*:backend=%q
driver = vpopmail
}
protocol lda {
mail_plugins = " quota quota"
}
protocol imap {
mail_max_userip_connections = 30
mail_plugins = " quota imap_quota"
}
protocol pop3 {
mail_max_userip_connections = 30
mail_plugins = " quota quota"
}

Rispondi |

delivery 54: deferral: Unable_to_chdir_to_maildir._(#4.2.1)/

Controlla che il dominio destinatario non sia anche in control/local se è un dominio virtuale

Rispondi |

delivery 54: deferral: Unable_to_chdir_to_maildir._(#4.2.1)/

No in control/locals c'è solo il dominio del server senza il mail.

Rispondi |

delivery 54: deferral: Unable_to_chdir_to_maildir._(#4.2.1)/

Ok. Puoi postare il contenuto di qmail-showctl e l intera riga del log? Ho bisogno di vedere il dominio destinatario, magari altera il valore, l importante che corrisponda a ciò che hai nei fiile di configurazione 

Rispondi |

delivery 54: deferral: Unable_to_chdir_to_maildir._(#4.2.1)/

qmail-showctl

qmail home directory: /var/qmail.
user-ext delimiter: -.
paternalism (in decimal): 2.
silent concurrency limit: 1000.
subdirectory split: 23.
user ids: 1001, 1002, 1003, 0, 1004, 1005, 1006, 1007.
group ids: 1000, 1001.
authsenders: (Default.) No authenticated SMTP sender.
badhelo: (Default.) Any HELO host name is allowed.
badhelonorelay: (Default.) Any HELO host name is allowed.
badmailfrom: (Default.) Any MAIL FROM is allowed.
badmailfromnorelay: (Default.) Any MAIL FROM is allowed.
badmailto: (Default.) No RCPT TO are specifically denied.
badmailtonorelay: (Default.) No RCPT TO are specifically denied.
bouncefrom: Bounce user name is postmaster.
bouncehost: (Default.) Bounce host name is miodominio.it.
brtlimit: (Default.) The brtlimit is 0.
concurrencylocal: (Default.) Local concurrency is 10.
concurrencyremote: (Default.) Remote concurrency is 20.
databytes: SMTP DATA limit is 20000000 bytes.
defaultdomain: Default domain name is miodominio.it.
defaulthost: (Default.) Default host name is miodominio.it.
dnsbllist:
List at zen.spamhaus.org configured for dnsbl check.
List at bl.spamcop.net configured for dnsbl check.
List at cbl.abuseat.org configured for dnsbl check.
doublebouncehost: (Default.) 2B recipient host: miodominio.it.
doublebounceto: 2B recipient user: postmaster.
envnoathost: (Default.) Presumed domain name is miodominio.it.
helohost: (Default.) SMTP client HELO host name is miodominio.it.
idhost: (Default.) Message-ID host name is miodominio.it.
localiphost: (Default.) Local IP address becomes miodominio.it.
locals:
Messages for miodominio.it are delivered locally.
me: My name is miodominio.it.
moreipme:
IP address 152.xxx.xxx.206 is me.
notipme: (Default.) All of my IP addresses are me.
outgoingip: (Default.) Outgoing IP address is 0.0.0.0.
percenthack: (Default.) The percent hack is not allowed.
plusdomain: Plus domain name is miodominio.it.
qmqpservers: (Default.) No QMQP servers.
queuelifetime: Message lifetime in the queue is 259200 seconds.
rcpthosts:
SMTP clients may send messages to recipients at vdominio1.eu.
SMTP clients may send messages to recipients at vdominio2.it.
SMTP clients may send messages to recipients at vdominio3.com.
morercpthosts: (Default.) No effect.
morercpthosts.cdb: (Default.) No effect.
smtpgreeting: (Default.) SMTP greeting: 220 miodominio.it.
smtproutes: (Default.) No artificial SMTP routes.
spfbehavior: The SPF behavior is 3.
spfexp: (Default.) The SPF default explanation is: 550 See http://spf.pobox.com/why.html?sender=%{S}&ip=%{I}&receiver=%{xR}.
spfguess: (Default.) The guess SPF rules are: .
spfrules: (Default.) The local SPF rules are: .
srs_domain: (Default.) SRS domain name is .
srs_secrets: (Default.) No secrets
srs_maxage: (Default.) SRS maxage is 21.
srs_hashlength: (Default.) SRS hashlength is 4.
srs_hashmin: (Default.) SRS hashmin is 4.
timeoutconnect: (Default.) SMTP client connection timeout is 60 seconds.
timeoutremote: (Default.) SMTP client data timeout is 1200 seconds.
timeoutsmtpd: (Default.) SMTP server data timeout is 1200 seconds.
virtualdomains:
Virtual domain: vdominio1.eu:vdominio1.eu
Virtual domain: vdominio2.it:vdominio2.it
Virtual domain: vdominio3.com:vdominio3.com
servercert.pem: I have no idea what this file does.
maxrcpt: I have no idea what this file does.
dkimdomain: I have no idea what this file does.
simcontrol: I have no idea what this file does.
simversions.cdb: I have no idea what this file does.
rcpthosts.lock: I have no idea what this file does.
simcontrol.cdb: I have no idea what this file does.
virtualdomains.lock: I have no idea what this file does.
cache: I have no idea what this file does.
softlimit: I have no idea what this file does.
defaultdelivery: I have no idea what this file does.
concurrencyincoming: I have no idea what this file does.
relaylimits: I have no idea what this file does.
domainkeys: I have no idea what this file does.
locals.lock: I have no idea what this file does.
Mar 22 15:26:00 2021 starting delivery 8: msg 400704 to local vdominio1.eu-info@vdominio1.eu
Mar 22 15:26:00 2021 status: local 1/10 remote 0/20
Mar 22 15:26:00 2021 delivery 8: deferral: Unable_to_chdir_to_maildir._(#4.2.1)/
Mar 22 15:26:00 2021 status: local 0/10 remote 0/20

Grazie

Rispondi |

delivery 54: deferral: Unable_to_chdir_to_maildir._(#4.2.1)/

cosa hai nel file .qmail-default e se esiste nel .qmail della casella?

posta anche il tuo qmail-smtpd/run per piacere

Rispondi |

delivery 54: deferral: Unable_to_chdir_to_maildir._(#4.2.1)/

.qmail-default ho ./Maildir/

#!/bin/sh

QMAILDUID=`id -u vpopmail`
NOFILESGID=`id -g vpopmail`
HOSTNAME=`hostname`
MAXSMTPD=`cat /var/qmail/control/concurrencyincoming`
SOFTLIMIT=`cat /var/qmail/control/softlimit`
LOCAL=`head -1 /var/qmail/control/me`

# This enables greetdelay for qmail-smtpd
export SMTPD_GREETDELAY=20
export DROP_PRE_GREET=1

# This enables chkuser
export CHKUSER_START=ALWAYS

# DKIM - SURBL configuration
# DKIMQUEUE and SURBLQUEUE are front-ends of qmail-queue
export SURBL=1 # Comment out to enable SURBL filtering
export QMAILQUEUE=/var/qmail/bin/surblqueue # executes surblfilter
export SURBLQUEUE=/var/qmail/bin/qmail-dkim # executes qmail-dkim after sublfilter
export DKIMQUEUE=/var/qmail/bin/simscan # simscan is executed after qmail-dkim
export DKIMKEY=/var/qmail/control/domainkeys/%/default
# DKIM verification. Use carefully
export DKIMVERIFY="FGHKLMNOQRTVWjp"
# This is to avoid verification of outgoing messages
export RELAYCLIENT_NODKIMVERIFY=1

# This turns off TLS on port 25
export DISABLETLS="1"

# Requires that authenticated user and 'mail from' are identical
export FORCEAUTHMAILFROM=1

# rcptcheck-overlimit. Limits the number of emails sent by relayclients
export RCPTCHECK=/var/qmail/bin/overlimit
export RCPTCHECKRELAYCLIENT="1"

# This enables simscan debug
#export SIMSCAN_DEBUG=4

#exec /usr/local/bin/softlimit -m "$SOFTLIMIT"
exec /usr/local/bin/tcpserver -v -R -l "$LOCAL" -x /var/qmail/vpopmail/etc/tcp.smtp.cdb -c 20 -u "$QMAILDUID" -g "$NOFILESGID" 0 25 /var/qmail/bin/qmail-smtpd 2>&1

Rispondi |

delivery 54: deferral: Unable_to_chdir_to_maildir._(#4.2.1)/

nel .qmail-default metti

| /home/vpopmail/bin/vdelivermail '' delete

e riprova

Rispondi |

delivery 54: deferral: Unable_to_chdir_to_maildir._(#4.2.1)/

Scusa la domanda banale ma come faccio a riprovare, aspetto che arrivini dei messaggi sulle caselle de dominio?

Nel caso fosse risolutivo come imposto tutto e che mi inserica questo in automatico quando uso vpopaddomain?

Grazie

Rispondi |

delivery 54: deferral: Unable_to_chdir_to_maildir._(#4.2.1)/

è sufficiente fare un test inviando a te stesso un messaggio. Se il dominio non è raggiungibile dall'esterno, fai un test dalla linea di comando con swaks, come mostrato nella guida.

Per far sì che il defaultdelivery sia copiato automaticamente alla creazione del nuovo dominio non devi fare niente se hai installato la mia combined patch per vpopmail. Devi solo scrivere il file qmail/control/defaultdelivery e il suo contenuto viene copiato nel .qmail-default dei nuovi domini

Rispondi |

delivery 54: deferral: Unable_to_chdir_to_maildir._(#4.2.1)/

Si hai risolto, il problema. Però ora se ne pone un altro che esula dalla configurazione. Non posso recuperare i backup del server precedente o devo andare a cambiare a mano tuttii .qmail-dafault.

Non c'è modo di mantenere sial la configurazione ./maildir/ e | /var/qmail/vpopmail/bin/vdelivermail '' delete" ?

Grazie Roberto

Rispondi |

delivery 54: deferral: Unable_to_chdir_to_maildir._(#4.2.1)/

la seconda che hai detto :-)

se i domini sono molti magari con uno scriptino si fa più in fretta

Rispondi |

delivery 54: deferral: Unable_to_chdir_to_maildir._(#4.2.1)/

Buongiorno Roberto ti segnalo che quando vado a aggiungere un virtualdom con

/var/qmail/vpopmail/bin/vadddomain nomedominio.com genera 2 file .qmail-... come vedi qui sotto.

-rw------- 1 vpopmail vchkpw 49 23 mar 11.42 .qmail-defau
-rw------- 1 vpopmail vchkpw 0 23 mar 11.42 .qmail-default

il file .qmail-defau contiene | /var/qmail/vpopmail/bin/vdelivermail '' delete, il file .qmail-default è vuoto, uso le tue patch.
TI faccio sapere se anche con i prossimi domini fa la stessa cosa.

Grazie

Gabriele

Rispondi |

delivery 54: deferral: Unable_to_chdir_to_maildir._(#4.2.1)/

non riesco a riprodurre il problema qui... puoi fare qualche test provando a creare un dominio di prova?

Rispondi |

.qmail-defau  .qmail-default

Ciao Roberto, ho fatto altri 3 domini e tutti hanno generato 2 file

.qmail-defau  .qmail-default , adesso ne ho fatto uno e a  fatto un solo file .qmail-default corretto. Domani ne dovrò fare degli altri ti aggiorno.

Grazie

Rispondi |

.qmail-defau  .qmail-default

mi scrivi il contenuto *esatto* del control/defaultdelivery?

quale patch stai usando? quella del 9 marzo?

Rispondi |

.qmail-defau  .qmail-default

Buongiorno ecco il defaultdelivery

| /var/qmail/vpopmail/bin/vdelivermail '' delete;

il file della patch è roberto-netqmail-1.06.patch-latest.gz, se lo scompatto (gunzip ...) la data del file è 29 lug 2020.
Scaricata da https://notes.sagredo.eu/files/qmail/patches/roberto-netqmail-1.06.patch-latest.gz.

Buona giornata

Grazie

Gabrieel

Rispondi |

.qmail-defau  .qmail-default

vedo inoltre che stai installando vpopmail in una posizione anomala... non che non si possa fare, ma può darsi che la tua configurazione sia sostanzialmente diversa da quella qui suggerita

Per la precisione, devi installare l'ultima patch di vpopmail e configurare vpopmail come indicato nella guida

Rispondi |

.qmail-defau  .qmail-default

Togli il ; alla fine della riga.

Intendevo quale patch di vpopmail , non di qmail

Rispondi |

.qmail-defau  .qmail-default

Per la posizione di vpomail in home ho un link a /var/qmail/vpopmail perché come te mi piace avare tutto raccolto nelle dir di qmail e per avere installazioni più simili possibili.

La patch è quella del 20210309, il ";" è solo nel post.
La differenza più grande con la tua configurazione è che non posso usare sql per gli utenti dei virtualdom

Ne approfitto per chiederti altri chiarimenti sulla configurazione scrivi di usare "./config-fast smtp.yourdomain.tld" poi per l'uso di vpopmail quando vado a fare un nuovo vdomain uso come suggerito "vadddomain nuovodominio.com" senza indicare il 3° livello.

Ora in /var/qmail/control/rcpthosts mi ritrovo tutti i domini aggiunti con vadddomain senza il 3° e smtp.yourdomain.tld col 3° livello.
Considerando che l'MX è smtp.yourdomain.tld e il rDNS è smtp.yourdomain.tld (yourdomain.tld senza 3° liv è un altro server) come è più corretto usare "./config-fast"? con o senza il 3° liv.

I record DNS sono questi

yourdomain.tld. 3600 MX 1 smtp.yourdomain.tld. 
yourdomain.tld. 3600 A 5.xxx.xxx.203
smtp.yourdomain.tld. 3600 A 152.xxx.xxx.206

In fine tutte le mail che mi arrivano dal sistema (ad es i report di cron) arrivano da root@smtp.yourdomain.tld invece che da root@yourdomain.tld, credo non sia un problema visto che come suggerivi non ho fatto un vdomain col nome yourdomain.tld.

Grazie mille

Gabriele

Rispondi |

.qmail-defau  .qmail-default

per quanto riguarda il defaultdelivery, potrebbe essere un problema di memoria. Mi puoi dire quali sono i domini che hanno creato il problema e quali non? Se ci sono problemi di riservatezza, mandameli usando il contatto in alto.

per quanto riguarda il resto, dovresti fare esattamente come riportato nella guida, quindi:

- smtp.yourdomain.tld è il nome della MTA e non deve essere un dominio virtuale.

- smtp.yourdomain.tld non deve figurare in rcpthosts, perchè non è un dominio virtuale.

- Questo dominio è infatti usato come dominio delle mail di sistema ed è presente in me e locals.

- Deve avere un record MX valido, viceversa i msg di sistema possono essere rigettati. Dalla configurazione che posti sembra che smtp.yourdomain.tld non abbia un MX record ma solo un A record.

- tutti gli altri domini, di qualunque livello essi siano, se sono stati creati con vpopmail e quindi sono domini virtuali, devono essere presenti in rcpthosts e non in locals e ovviamente devono avere un record MX valido (e anche un record MX del tipo srs.yourdomain.tld)

PS a dire il vero smtp.yourdomain.tld potrebbe anche stare in rcpthosts, non fa molta differenza

Rispondi |

delivery 54: deferral: Unable_to_chdir_to_maildir._(#4.2.1)/

Ok grazie, stasera verifico. Trattasi di codice fresco, rilasciato solo qualche giorno fa e non mi ero accorto di questo problema. Ovviamente puoi usare il server anche stando cosi le cose, tanto l'altro file rimane innocuo

Rispondi |

delivery 54: deferral: Unable_to_chdir_to_maildir._(#4.2.1)/

E stai usando lda?

Rispondi |

delivery 54: deferral: Unable_to_chdir_to_maildir._(#4.2.1)/

No,  in ho /var/qmail/control/defaultdelivery "| /var/qmail/vpopmail/bin/vdelivermail '' delete" ho questo sugli altri server ho ./Maildir/

Grazie

Rispondi |

Ultimi commenti
Articoli recenti

RSS feeds