qmail+vpopmail+roaming users+dovecot (POP3/IMAP)+spamdyke
O como instalar un servidor de correo en RHEL (RedHat Enterprise Linux) 4.
Resulta que hace días cambiamos de hosting, y después de pelearme con varias cosas como la administración del sistema (al ser compartido con dos amigos) lo verdaderamente bueno fue para configurar el correo electrónico.
Lo que necesitaba
# Servidor con soporte de correo con usuarios virtuales (no del sistema).
# No recibir mucho spam… al día a una cuenta de ymipollo me llegaban unos 200 mails de correo basura.
# Que tuviera acceso vía POP3, IMAP, que no aceptara relay y tuviera webmail compatible.
# Una nieve de limón.
Requisitos previos de instalación.
- MySQL, server, shared-libs, devel y client
- Obviamente apache y php con soporte de imap (si es que se requiere acceso desde web), los pasos para compilar php fueron:
./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-force-cgi-redirect --with-config-file-path=/etc --with-zlib --enable-exif --with-gd=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-freetype-dir=/usr --enable-gd-native-ttf --with-gettext=/usr --enable-mbstring --with-mysql=/usr --with-mysqli=/usr/bin/mysql_config --enable-sqlite-utf8 --with-curlwrappers --with-openssl=/usr --enable-zip --with-curl=/usr --with-imap=/usr --with-imap-ssl --with-kerberos
Instalando
Así que después de mucho batallar con postfix decidí que era mejor dejarlo por la paz e instalar lo que conozco: qmail. La instalación es muy sencilla siguiendo los pasos de “Life with qmail”.
El segundo paso fue instalar vpopmail, lo cual está muy sencillo siguiendo las instrucciones del INSTALL.mysql, los datos que use para compilar fueron:
./configure --enable-logging=p --disable-passwd --enable-clear-passwd --enable-auth-module=mysql --disable-domain-quotas --enable-auth-logging --enable-roaming-users --enable-vpopuser=vpopmail --enable-vpopgroup=vchkpw --enable-relay-clear-minutes=180
Una vez probada la instalación y funcionando, instalamos spamdyke con las instrucciones del mismo paquete y modificamos la forma en que arranca el servicio de SMTP, editando /service/qmail-smtpd/run de tal forma que la línea que arranca SMTP quede más o menos así:
exec /usr/local/bin/softlimit -m 200000000 /usr/local/bin/tcpserver -v -R -l "$LOCAL" -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" -u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /usr/local/bin/spamdyke -f /etc/spamdyke.conf /var/qmail/bin/qmail-smtpd 2>&1
El tamaño en softlimit dependerá de la memoria que se tenga, aquí cuidado porque con los datos por defecto simplemente se muere el programa spamdyke y después de horas de buscar cambiando el tamaño pude arreglarlo.
En /etc/spamdyke.conf tengo:
log-level=3
local-domains-file=/var/qmail/control/rcpthosts
max-recipients=50
idle-timeout-secs=60
graylist-dir=/home/vpopmail/graylist
graylist-min-secs=300
graylist-max-secs=1814400
greeting-delay-secs=5
reject-missing-sender-mx
reject-empty-rdns
check-dnsrbl=zombie.dnsbl.sorbs.net
check-dnsrbl=dul.dnsbl.sorbs.net
check-dnsrbl=bogons.cymru.com
Así que tengo graylisting, dnsrbl, rdns y que tengan MX asignado. No me extenderé mas en esto pero cabe señalar que esto detiene un 95% del spam y aproximadamente 1% de correos “buenos” (generalmente que no siguen los protocolos de correo).
Ahora para que inicie el servicio de dovecot (lo compilé manual, opciones predefinidas nada en especial) hay que decirle que levante pop3 e imap, de otra forma solo levantará IMAP aunque el servicio de pop esté configurado, eso también me dio lata durante horas.
Así quedó mi configuración:
protocols = imap pop3
disable_plaintext_auth = no
ssl_disable = yes
ssl_cert_file = /etc/pki/dovecot/certs/dovecot.pem
ssl_key_file = /etc/pki/dovecot/private/dovecot.pem
mail_location = maildir:/home/vpopmail/domains/%d/%n/Maildir
first_valid_uid = 89
protocol imap {
mail_executable = /home/COMUN/scripts/updateRelay /usr/local/libexec/dovecot/imap
listen = *:143
}
protocol pop3 {
login_executable = /usr/local/libexec/dovecot/pop3-login
listen = *:110
mail_executable = /home/COMUN/scripts/updateRelay /usr/local/libexec/dovecot/pop3
pop3_uidl_format = %08Xu%08Xv
}
protocol lda { postmaster_address = postmaster example.com }
auth_cache_size = 1000
auth_cache_ttl = 3600
auth_verbose = no
auth_debug = no
auth default {
mechanisms = plain
passdb vpopmail { }
userdb vpopmail { }
}
dict { }
plugin { }
Notar el archivo /home/COMUN/scripts/updateRelay, no es mas que un script para loggear el ip con el que se identifican para tener identificados de donde entran, de esa forma podemos utilizando el archive /home/vpopmail/bin/clearopensmtp para regenerar y limpiar los ips que pueden hacer relay… si es una forma poco limpia de hacerlo, pero funciona y además fue tomada de un ejemplo. Aquí el contenido del script:
(
IP=`echo $IP | grep -v '^192.168.'`
TD=`date +%s`;
if [ -n "$IP" ]
then
export HOME=/root/
echo "replace into relay VALUES('$IP','$TD');" | mysql vpop -u vpopr
export HOME=/
fi
) >> /var/log/maillog 2>&1
exec "$@"
Y creo que ya… nadamás tendríamos que poner a la herramienta clearopensmtp en crontab.
Referencias
* http://www.lifewithqmail.org/
* http://www.inter7.com/
* http://www.php.net/
* http://www.mysql.com/
* http://www.apache.org/
* http://www.dovecot.org/
* http://www.spamdyke.org/
10 comentarios ]
del.icio.us Estrella este post

