Un server di posta con qmail su FC6 (parte 4)
In questo articolo, vedremo principalmente come configurare i diversi aspetti e le differenti opzioni di qmail e sistemeremo cose quali il relay SMTP. Infine creeremo gli script e i files per il funzionamento di qmail, nonché per il logging. Buona lettura!
Livello: medio/avanzato
[tags]qmail,vpopmail,mysql,qmailadmin,squirrelmail,clamav,spamassassin,antivirus,qmail-scanner,ezmlm,posta elettronica,email,linux,fedora,fc,core[/tags]
La prima cosa che dovremo fare sarà l’impostazione del relay SMTP. A cosa serve, vi starete chiedendo? Serve ad impedire che il vostro server sia utilizzato in modo massiccio da qualche SPAMMER per inviare messaggi pubblicitari (facendo finire il vostro indirizzo IP esterno nelle blacklists tenute dai sistemi di gestione dei servizi antiSPAM), o peggio, a evitare che qualsiasi attacker possa inviare messaggi di posta elettronica falsificati, facendo risultare il vostro indirizzo IP come indirizzo mittente.
Il Relay è una funzionalità che permette all’utente che utilizza il nostro server SMTP di inviare email a indirizzi con un suffisso diverso da “@miodominio”.
E’ da notare che in passato i server SMTP erano tutti “Open Relay”, ovvero consentivano a chiunque l’invio di email. Ancora non si conosceva l’esistenza dello SPAM, che è aumentato al punto da diventare un grandissimo problema per gli amministratori. Con l’incremento degli utenti di Internet, sono aumentati pure gli utilizzatori di posta elettronica e, di conseguenza, coloro che sfruttavano i servers SMTP per inviare milioni di email in tutto il mondo, in modo anonimo e con i mittenti falsificati.
Per questo motivo, pian piano, tutti i servers SMTP sono stati adeguati per consentire il relay soltanto a determinati IP o ranges di IP (solitamente gli indirizzi IP della propria rete) e negarlo a tutti gli altri hosts.
E’ fondamentale impostare quest’opzione, se non state utilizzando questa guida solo per provare qmail, bensì per installarla su un server di produzione.
Per far ciò, bisogna modificare il file /etc/tcp.smtp:
# clausole:
# allow –> connessione TCP consentita
# deny –> connessione TCP negata
# RELAYCLIENT=”" –> relay consentito
# RBLSMTPD=”" –> non viene controllato rispetto all’RBL database
# RBLSMTPD=”testo errore” –> viene controllato rispetto all’RBL database e indica il messaggio di errore
#
echo ‘127.:allow,RELAYCLIENT=”"‘ >> /etc/tcp.smtp
echo ‘192.168.1.:allow,RELAYCLIENT=”"‘ >> /etc/tcp.smtp
echo ‘192.168.2.:allow,RELAYCLIENT=”"‘ >> /etc/tcp.smtp
Visto che ci siamo, impostiamo anche il relay POP3 (file /etc/tcp.pop3)
echo ‘:allow’ >> /etc/tcp.pop3
Adesso modifichiamo lo script qmailctl, alla sezione cdb, aggiungendo le linee seguenti
vi /usr/bin/qmailctl
tcprules /etc/tcp.pop3.cdb /etc/tcp.pop3.tmp < /etc/tcp.pop3
chmod 644 /etc/tcp.pop3.cdb
Infine, compiliamo il relay nel formato cdb
qmailctl cdb
Fatto!
Adesso sistemiamo alcune opzioni:
echo ‘postmaster’ > /var/qmail/control/bouncefrom
echo ‘doublebounce’ > /var/qmail/control/doublebounceto
echo ‘mioserver.miodominio’ > /var/qmail/control/doublebouncehost
echo ‘#’ > ~alias/.qmail-doublebounce
chmod 644 ~alias/.qmail-doublebounce
echo ‘345600′ > /var/qmail/control/queuelifetime
Diciamo a qmail di rigettare i messaggi che non presentano indirizzi di destinatari FORMALMENTE validi:
echo ‘# reject containing invalid characters, brackets or multiple @’ > /var/qmail/control/badmailto
echo ‘[!%#:\*\^]‘ >> /var/qmail/control/badmailto
echo ‘[\(\)]‘ >> /var/qmail/control/badmailto
echo ‘[\{\}]‘ >> /var/qmail/control/badmailto
echo ‘@.*@’ >> /var/qmail/control/badmailto
Configuriamo il dominio di default da utilizzare nel caso in cui siano forniti nomi utente senza dominio:
echo ‘miodominio’ > /var/qmail/control/defaultdomain
Impostiamo alcuni alias:
echo ‘postmaster@miodominio’ > ~alias/.qmail-root
echo ‘postmaster@miodominio’ > ~alias/.qmail-postmaster
echo ‘postmaster@miodominio’ > ~alias/.qmail-mailer-daemon
chmod 644 ~alias/.qmail-*
Impostiamo gli script per l’avvio automatico e per il funzionamento di qmail:
cd /etc/rc.d/init.d
ln -s /var/qmail/bin/qmailctl /etc/rc.d/init.d/qmail
ln -s ../init.d/qmail /etc/rc.d/rc0.d/K30qmail
ln -s ../init.d/qmail /etc/rc.d/rc1.d/K30qmail
ln -s ../init.d/qmail /etc/rc.d/rc2.d/S80qmail
ln -s ../init.d/qmail /etc/rc.d/rc3.d/S80qmail
ln -s ../init.d/qmail /etc/rc.d/rc4.d/S80qmail
ln -s ../init.d/qmail /etc/rc.d/rc5.d/S80qmail
ln -s ../init.d/qmail /etc/rc.d/rc6.d/K30qmail
mkdir -p /var/qmail/supervise/qmail-send/log
mkdir -p /var/qmail/supervise/qmail-smtpd/log
mkdir -p /var/qmail/supervise/qmail-pop3d/log
chmod +t /var/qmail/supervise/qmail-send
chmod +t /var/qmail/supervise/qmail-smtpd
chmod +t /var/qmail/supervise/qmail-pop3d
vi /var/qmail/supervise/qmail-send/run
-> #!/bin/sh
-> exec env – PATH=”/var/qmail/bin:$PATH” qmail-start ./Maildir/
vi /var/qmail/supervise/qmail-send/log/run
-> #!/bin/sh
-> # Keep 20 logs of max 50Mb each
-> #
-> # They will get rotated when they reach 50Mb in size,
-> # or at midnight when our crontab script fires (whichever event comes 1st)
-> exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s50000000 n20 /var/log/qmail/send
vi /var/qmail/supervise/qmail-smtpd/run
-> #!/bin/sh
-> QMAILDUID=`id -u qmaild`
-> NOFILESGID=`id -g qmaild`
->
-> exec /usr/local/bin/softlimit -m 70000000 \
-> /usr/local/bin/tcpserver \
-> -H -l miodominio \
-> -v -x /etc/tcp.smtp.cdb \
-> -c 20 -R -u “$QMAILDUID” -g “$NOFILESGID” 0 smtp \
-> /usr/local/bin/rblsmtpd -b -C \
-> -r ‘list.dsbl.org:Your message was rejected because the message was sent from a server listed in DSBL – More information regarding this problem is available at http://dsbl.org/listing?%IP% – Please forward this error to your email server support staff for resolution.’ \
-> -r ’sbl-xbl.spamhaus.org:Your message was rejected because the message was sent from a server listed in the Spamhaus RBL – More information regarding this problems is available at http://www.spamhaus.org/query/bl?ip=%IP% – Please forward this error to your email server support staff for resolution.’ \
-> -t 5 \
-> /var/qmail/bin/qmail-smtpd 2>&1
-> # The line in orange should be used if you are running qmail on a computer
-> # that is on a LAN that is using fake ips/masquerading.
-> # It tells tcpserver not to bother trying to resolve ip addresses
-> # to names when writing the SMTP log files. Usually with fake ips,
-> # you cant resolve them to names, so it will make the SMTP services run
-> # really slowly if it is always trying to resolve these addresses.
-> # Alternatively, if you are eg an ISP and all your SMTP clients are
-> # connecting from real IPs with resolvable names, then you can omit
-> # the orange line and then then benefit from more readable logfiles.
vi /var/qmail/supervise/qmail-smtpd/log/run
-> #!/bin/sh
-> # Keep 20 logs of max 50Mb each
-> #
-> # They will get rotated when they reach 50Mb in size,
-> # or at midnight when our crontab script fires (whichever event comes 1st)
-> exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s50000000 n20 /var/log/qmail/smtpd
vi /var/qmail/supervise/qmail-pop3d/run
-> #!/bin/sh
-> exec /usr/local/bin/softlimit -m 70000000 \
-> /usr/local/bin/tcpserver \
-> -H -l miodominio \
-> -v -x /etc/tcp.pop3.cdb -c 30 -R 0 pop3 \
-> /var/qmail/bin/qmail-popup miohost.miodominio \
-> /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1
-> # The line in orange should be used if you are running qmail on a computer
-> # that is on a LAN that is using fake ips/masquerading.
-> # It tells tcpserver not to bother trying to resolve ip addresses
-> # to names when writing the POP3 log files. Usually with fake ips,
-> # you cant resolve them to names, so it will make the POP3 services run
-> # really slowly if it is always trying to resolve these addresses.
-> # Alternatively, if you are eg an ISP and all your POP3 clients are
-> # connecting from real IPs with resolvable names, then you can omit
-> # the orange line and then then benefit from more readable logfiles.
vi /var/qmail/supervise/qmail-pop3d/log/run
-> #!/bin/sh
-> # Keep 20 logs of max 50Mb each
-> # They will get rotated when they reach 50Mb in size,
-> # or at midnight when our crontab script fires (whichever event comes 1st)
-> exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s50000000 n20 /var/log/qmail/pop3d
chmod 755 /var/qmail/supervise/qmail-send/run
chmod 755 /var/qmail/supervise/qmail-send/log/run
chmod 755 /var/qmail/supervise/qmail-smtpd/run
chmod 755 /var/qmail/supervise/qmail-smtpd/log/run
chmod 755 /var/qmail/supervise/qmail-pop3d/run
chmod 755 /var/qmail/supervise/qmail-pop3d/log/run
mkdir /var/log/qmail
mkdir /var/log/qmail/smtpd
mkdir /var/log/qmail/send
mkdir /var/log/qmail/pop3d
chown -R qmaill /var/log/qmail
crontab -e
-> # the following 3 lines rotate the qmail log files daily
-> 16 0 * * * /usr/local/bin/svc -a /service/qmail-smtpd/log
-> 20 0 * * * /usr/local/bin/svc -a /service/qmail-send/log
-> 24 0 * * * /usr/local/bin/svc -a /service/qmail-pop3d/log
ln -s /var/qmail/supervise/qmail-send /service
ln -s /var/qmail/supervise/qmail-smtpd /service
ln -s /var/qmail/supervise/qmail-pop3d /service
Verifichiamo adesso che i demoni qmail, a questo punto, siano in esecuzione
ps ax
ci dovrebbe essere una riga tipo la seguente (con i puntini sospensivi, altrimenti con un messaggio di errore al loro posto):
readproctitle service errors: ………………………………
Ancora, ulteriore conferma si ha se si usa:
qmailctl stat
Da questo momento si può usare qmailctl start / qmail stop per avviare o stoppare il servizio.
Abbiamo finito? NO! Non abbiamo ancora installato il server POP, per la ricezione della posta. Lo faremo nel prossimo articolo.
[tags]qmail,vpopmail,mysql,qmailadmin,squirrelmail,clamav,spamassassin,antivirus,qmail-scanner,ezmlm,posta elettronica,email,linux,fedora,fc,core[/tags]











