Instalación de qmail con vpopmail, qmail-scanner, ClamAV y SpamAssassin (IV)
Para la instalación de un servidor de correo qmail tenemos de momento los siguientes pasos:
- Instalación básica de qmail
- Instalación de vpopmail y SpamAssassin
- Instalación de ClamAV y qmail-scan-queue
Hoy vamos a arrancar qmail con el sistema antispam y antivirus.
Arrancar qmail
Creamos el fichero /var/qmail/rc:
cat > /var/qmail/rc <<EOF #!/bin/sh # Using stdout for logging # Using control/defaultdelivery from qmail-local to deliver messages by default exec env - PATH="/var/qmail/bin:\$PATH" \\ qmail-start "\$(cat /var/qmail/control/defaultdelivery)" EOF
Definimos los permisos y definimos que queremos usar Maildir:
chmod 755 /var/qmail/rc mkdir -p /var/log/qmail echo ./Maildir >/var/qmail/control/defaultdelivery
A continuación creamos el fichero /var/qmail/bin/qmailctl para el arranque y parada de qmail:
cat > /var/qmail/bin/qmailctl <<EOF
#!/bin/sh
# description: the qmail MTA
PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin
export PATH
QMAILDUID=\`id -u qmaild\`
NOFILESGID=\`id -g qmaild\`
case "\$1" in
start)
echo "Starting qmail"
if svok /service/qmail-send ; then
svc -u /service/qmail-send /service/qmail-send/log
else
echo "qmail-send supervise not running"
fi
if svok /service/qmail-smtpd ; then
svc -u /service/qmail-smtpd /service/qmail-smtpd/log
else
echo "qmail-smtpd supervise not running"
fi
if [ -d /var/lock/subsys ]; then
touch /var/lock/subsys/qmail
fi
;;
stop)
echo "Stopping qmail..."
echo " qmail-smtpd"
svc -d /service/qmail-smtpd /service/qmail-smtpd/log
echo " qmail-send"
svc -d /service/qmail-send /service/qmail-send/log
if [ -f /var/lock/subsys/qmail ]; then
rm /var/lock/subsys/qmail
fi
;;
stat)
svstat /service/qmail-send
svstat /service/qmail-send/log
svstat /service/qmail-smtpd
svstat /service/qmail-smtpd/log
qmail-qstat
;;
doqueue|alrm|flush)
echo "Flushing timeout table and sending ALRM signal to qmail-send."
/var/qmail/bin/qmail-tcpok
svc -a /service/qmail-send
;;
queue)
qmail-qstat
qmail-qread
;;
reload|hup)
echo "Sending HUP signal to qmail-send."
svc -h /service/qmail-send
;;
pause)
echo "Pausing qmail-send"
svc -p /service/qmail-send
echo "Pausing qmail-smtpd"
svc -p /service/qmail-smtpd
;;
cont)
echo "Continuing qmail-send"
svc -c /service/qmail-send
echo "Continuing qmail-smtpd"
svc -c /service/qmail-smtpd
;;
restart)
echo "Restarting qmail:"
echo "* Stopping qmail-smtpd."
svc -d /service/qmail-smtpd /service/qmail-smtpd/log
echo "* Sending qmail-send SIGTERM and restarting."
svc -t /service/qmail-send /service/qmail-send/log
echo "* Restarting qmail-smtpd."
svc -u /service/qmail-smtpd /service/qmail-smtpd/log
echo "* Restarting qmail-pop3d."
svc -t /service/qmail-pop3d /service/qmail-pop3d/log
;;
cdb)
tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
chmod 644 /etc/tcp.smtp.cdb
echo "Reloaded /etc/tcp.smtp."
;;
help)
cat <<HELP
stop -- stops mail service (smtp connections refused, nothing goes out)
start -- starts mail service (smtp connection accepted, mail can go out)
pause -- temporarily stops mail service (connections accepted, nothing leaves)
cont -- continues paused mail service
stat -- displays status of mail service
cdb -- rebuild the tcpserver cdb file for smtp
restart -- stops and restarts smtp, sends qmail-send a TERM & restarts it
doqueue -- schedules queued messages for immediate delivery
reload -- sends qmail-send HUP, rereading locals and virtualdomains
queue -- shows status of queue
alrm -- same as doqueue
flush -- same as doqueue
hup -- same as reload
HELP
;;
*)
echo "Usage: \$0 {start|stop|restart|doqueue|flush|reload|stat|pause|cont|cdb|queue|help}"
exit 1
;;
esac
exit 0
EOF
Definimos permisos:
chmod 755 /var/qmail/bin/qmailctl ln -s /var/qmail/bin/qmailctl /usr/bin
Creació dels scripts de supervise
A continuación definiremos los servicios para que funcionen con daemontools:
mkdir -p /var/qmail/supervise/qmail-send/log mkdir -p /var/qmail/supervise/qmail-smtpd/log mkdir -p /var/qmail/supervise/qmail-smtpd/log mkdir -p /var/log/qmail/smtpd chown qmaill /var/log/qmail /var/log/qmail/smtpd
Definimos /var/qmail/supervise/qmail-send/run:
cat > /var/qmail/supervise/qmail-send/run <<EOF #!/bin/sh exec /var/qmail/rc EOF
Seguimos con /var/qmail/supervise/qmail-send/log/run:
cat > /var/qmail/supervise/qmail-send/log/run <<EOF #!/bin/sh exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail EOF
A continiación para el qmail-smtpd definimos el fichero /var/qmail/supervise/qmail-smtpd/run:
cat > /var/qmail/supervise/qmail-smtpd/run <<EOF
#!/bin/sh
QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl" export QMAILQUEUE
MAXSMTPD=\$(cat /var/qmail/control/concurrencyincoming)
LOCAL=\$(head -1 /var/qmail/control/me)
QMAILDUID=\$(id -u qmaild)
NOFILESGID=\$(id -g qmaild)
if [ -z "\$QMAILDUID" -o -z "\$NOFILESGID" -o -z "\$MAXSMTPD" -o -z "\$LOCAL" ]; then
echo QMAILDUID, NOFILESGID, MAXSMTPD, or LOCAL is unset in
echo /var/qmail/supervise/qmail-smtpd/run
exit 1
fi
if [ ! -f /var/qmail/control/rcpthosts ]; then
echo "No /var/qmail/control/rcpthosts!"
echo "Refusing to start SMTP listener because it'll create an open relay"
exit 1
fi
exec /usr/local/bin/softlimit -m 100000000 \
/usr/local/bin/tcpserver -v -R -l "\$LOCAL" -x /etc/tcp.smtp.cdb -c "\$MAXSMTPD" \
-u 89 -g 89 0 smtp /usr/local/bin/rblsmtpd -b -rsbl.spamhaus.org \
/var/qmail/bin/qmail-smtpd \$(hostname --long) /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-smtp-auth-wrapper.sh 2>&1 7>&1
EOF
Seguimos con los logs del daemon con el fichero /var/qmail/supervise/qmail-smtpd/log/run:
cat > /var/qmail/supervise/qmail-smtpd/log/run <<EOF #!/bin/sh exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtpd EOF
A continuación definimos la concurrencia maxima de correos entrantes (20) y arrancamos ya qmail:
echo 20 > /var/qmail/control/concurrencyincoming chmod 644 /var/qmail/control/concurrencyincoming chmod +x /var/qmail/supervise/qmail-send/run /var/qmail/supervise/qmail-send/log/run /var/qmail/supervise/qmail-smtpd/log/run /var/qmail/supervise/qmail-smtpd/run ln -s /var/qmail/supervise/qmail-send /service/ ln -s /var/qmail/supervise/qmail-smtpd /service/ qmailctl stop echo '127.:allow,RELAYCLIENT=""' >>/etc/tcp.smtp qmailctl cdb /etc/init.d/sendmail stop rpm -e --nodeps sendmail mv /usr/lib/sendmail /usr/lib/sendmail.old 2>/dev/null mv /usr/sbin/sendmail /usr/sbin/sendmail.old 2>/dev/null chmod 0 /usr/lib/sendmail.old /usr/sbin/sendmail.old 2>/dev/null ln -s /var/qmail/bin/sendmail /usr/lib ln -s /var/qmail/bin/sendmail /usr/sbin qmailctl start
A continuación deberiamos definir los siguientes alias:
- postmaster - Es un requerimiento por el RFC 2821 para definir el administrador de qmail
- mailer-daemon - Estandard de-facto para los bounces
- root - Redirigimos el correo del usuario root de la maquina.
- abuse - Estandard de-facto para quejas como, por ejemplo, temas de spam.
echo jordi > /var/qmail/alias/.qmail-root echo jordi > /var/qmail/alias/.qmail-postmaster ln -s .qmail-postmaster /var/qmail/alias/.qmail-mailer-daemon ln -s .qmail-postmaster /var/qmail/alias/.qmail-abuse chmod 644 /var/qmail/alias/.qmail-root /var/qmail/alias/.qmail-postmaster
Mediante estos alias recibiremos el correo a jordi@hostname.
Finalmente comprovamos la instalación mediante los siguientes comandos.
# qmailctl stat /service/qmail-send: up (pid 25317) 675 seconds /service/qmail-send/log: up (pid 25316) 675 seconds /service/qmail-smtpd: up (pid 25672) 505 seconds /service/qmail-smtpd/log: up (pid 25466) 614 seconds messages in queue: 0 messages in queue but not yet preprocessed: 0 cd /usr/local/src # wget http://lifewithqmail.org/inst_check # bash inst_check Congratulations, your LWQ installation looks good!
Podemos comprovar que funcione el servicio de correo mediante telnet.
El listado de la serie completa es Instalación de un servidor de correo con qmail/vpopmail/qmail-scanner/ClamAV/SpamAssassin:
- Iniciar la instalación de qmail con las daemontools y MySQL para vpopmail
- Instalación de vpopmail y spamassassin
- Instalación de ClamAV como motor antivirus y qmail-scan-queue para el analisis de los mensajes con ClamAV y SpamAssassin
- Arranque de qmail y sus scripts de inicio
- Instalación del servidor IMAP y POP3 con dovecot
- Instalación de parches para qmail: SMTP-AUTH, CHKUSER y UCSPI-TLS
- Scripts de supervise para los daemons SMTP y POP3 con SSL
Relacionados
Imprimir
9. March 2009 at 11:58 am :
Muy buena guía ¿Sabéis de alguna otra para configurar qmail como servidor secundario y que reenvié al primario cuando vuelva a estar online?
9. March 2009 at 1:31 pm :
Puedes simplemente definir una smtproute del secundario al primario. En el secundario definies el fichero /var/qmail/control/smtproutes con la IP del primario:
Debes tener en cuenta que el secundario debe estar sincronizado con las cuentas (usuario y dominio) del primario para que funcione correctamente y no rebote correos.
9. March 2009 at 3:04 pm :
¡Hola!
Tan solo quería daros la enhorabuena por el buen trabajo que estáis haciendo con esta página. Buenos tutoriales, muy claros, y de temas muy diversos.
¡Seguid así!
Saludos,
Nacho
17. May 2010 at 9:25 pm :
¡Hola!
Excelente tutorial, me he encontrado con dos problemas por un lado no encuentro de donde sacar qmail-smtp-auth-wrapper.sh y por el otro (problema que debe estar relacionado) el servidor me dice que no está habilitado el SMTP AUTH.
Cualquier ayuda será bienvenida!
Abrazos,
Diego
20. May 2010 at 7:35 am :
Cierto, el SMTP AUTH se instala más adelante, en la parte 6:
Instalación de parches para qmail: SMTP-AUTH, CHKUSER y UCSPI-TLS
He modificado el articulo para incluir más enlaces.