- Info: http://cr.yp.to/daemontools.html
- Scaricare daemontools: http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
- Scaricare netqmail: https://notes.sagredo.eu/files/qmail/tar/netqmail-1.06.tar.gz
daemontools è una collezione di strumenti per gestire servizi UNIX. Monitora i servizi di qmail e salva i messaggi di errore in uno o più logs.
Changelog
- Sep 3, 2023
-Buffer Overflow fixed in timestamp.c (patch multilog-readable_datetime, Ubuntu 22.04). It was causing empty log files everywhere. (thanks Bai Borko and KPC) - Jun 30, 2023
-aggiunta la mia patch multilog-readable_datetime, che sostituisce il timestamp con un formato leggibile nei file log. Non installare questa patch se si preferisce il vecchio timestamp.
-se si installa questa patch è necessario anche riscaricare il programmaconvert-multilog
. Lasciare invece il programma originale se si usa il timestamp . (diff)
Upgrading
Se si è già installato daemontools
e si desidera solo applicare la patch multilog_readable-datetime
è necessario seguire i seguenti pasaggi:
cd /var/qmail/admin wget https://notes.sagredo.eu/files/qmail/patches/daemontools/daemontools-0.76-readable_datetime.patch cd daemontools patch -p1 < ../daemontools-0.76-readable_datetime.patch ./package/install qmailctl reboot
NB: è necessario "uccidere" i processi tcpserver
già esecuzione e far ripartire qmail
with qmailctl reboot
.
Scaricare nuovamente il programma convert-multilog
:
rm /usr/local/bin/convert-multilog wget -O /usr/local/bin/convert-multilog https://notes.sagredo.eu/files/qmail/convert-multilog
Infine ritoccare queste righe nel proprio file qmail-smtpd/run/log e qmail-smtpsd/run/log files:
- n5 s16777215 '-*' '+* qlog*' !/usr/local/bin/archive_qmail_qlog $LOGDIRQLOG + n5 s16777215 '-*' '+*qlog*' !/usr/local/bin/archive_qmail_qlog $LOGDIRQLOG
notare lo spazio bianco mancante in 'qlog'.
Installazione
Innanzitutto creiamo la cartella che ospiterà qmail, daemontools e ucspi-tcp:
mkdir /var/qmail
In questa guida supporrò che tutti i pacchetti sorgenti siano stati scaricati nella cartella /usr/local/src.
cd /usr/local/src wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz wget https://notes.sagredo.eu/files/qmail/patches/daemontools/daemontools-0.76.errno.patch wget https://notes.sagredo.eu/files/qmail/patches/daemontools/multilog_filesize_limit.patch wget https://notes.sagredo.eu/files/qmail/patches/daemontools/daemontools-0.76-readable_datetime.patch
La patch multilog_filesize_limit
(grazie a Sam Tang) consente di estendere il limite delle dimensioni del log file fino a 100MB (per default è 16MB).
La mia patch multilog-readable_datetime
sostituisce il timestamp con un formato leggibile. Se si preferisce il normale timestamp, non installare questa patch. Ecco quello che saranno le differenze nelle linee dei file log:
@40000000649b607828223d14 tcpserver: status: 0/200/0 diventerà 2023-06-28 16:17:26.501272173 tcpserver: status: 0/200/0
Installare daemontools:
cd /var/qmail tar xzf /usr/local/src/daemontools-0.76.tar.gz cd admin ln -s daemontools-0.76 daemontools chmod 1755 .
Dunque abbiamo daemontools
in /var/qmail/admin/daemontools
Ora applichiamo le patch e installiamo:
cd daemontools patch -p1 < /usr/local/src/daemontools-0.76.errno.patch patch -p1 < /usr/local/src/multilog_filesize_limit.patch patch -p1 < /usr/local/src/daemontools-0.76-readable_datetime.patch package/install
Aggiungere ora il servizio "clear", che è utile quando si deve pulire la riga readproctitle service errors:
cd ../ mkdir clear touch clear/down cat > clear/run << __EOF__ #!/bin/sh yes '' | head -4000 | tr '\n' . __EOF__ chmod +x clear/run
Infine, dal momento che tutte quelle cartelle nella directory principale / mi disturbano non poco:
ln -s /var/qmail/admin/daemontools/command /command
In questo modo abbiamo quasi tutto sotto /var/qmail, ad eccezione di /command e /service che sono solo dei link simbolici.
Lanciare daemontools
all'avvio
Il commndo /command/svcscanboot
è stato inserito nel file /etc/inittab. Ciò sarà sufficiente a lanciare qmail
all'avvio della macchina, a meno che non si abbia a che fare con un sistema operativo basato su systemd.
In tal caso il comando di cui sopra potrà essere aggiunto a rc.local, supponendo che lo stesso rc.local sia eseguito all'avvio. In alternativa si può scegliere di creare un servizio specifico daemontools.service
come segue:
cat > /etc/systemd/system/daemontools.service << __EOF__ [Unit] Description=Daemontools service supervision ConditionPathExists=/command/svscanboot [Service] ExecStart=/command/svscanboot Restart=always [Install] WantedBy=multi-user.target __EOF__ systemctl enable daemontools.service systemctl start daemontools.service