Peleando con postfix
|
|
Por luchonidas
departamento esos-pequeños-detalles-que-no-vienen-en-la-documentación , Sección Diarios Puesto a las Wed Apr 21st, 2004 at 11:53:28 AM CET
|
 |
Tras casi dos semanas de pelearme con Postfix
y con Cyrus-sasl, he
logrado lo que me parecía imposible, echar a andar el postfix
con autentificación... todavía no me lo creo; y como hay una serie de detalles que no encontré en la documentación, ni en mi búsqueda por internet, aquí los escribo, para que queden para la posteridad.
Nota: no pretendo acaparar la página de los diarios, pero la historia que tenía me salió demasiado larga y preferí dividirla en dos (como la 2ª y 3ª parte de Regreso al futuro).
|
Tengo el plan de migrar el servidor de correo de la empresa de Sendmail a postfix, más que
nada porque la versión de RedHat que utilizamos no tiene
más actualizaciones por parte de la empresa (ya conoceis la
historia de RedHat), y porque he comprobado que me es más
fácil compilar el postfix que el sendmail (hasta el día
que me ponga en serio a eso, entonces será pan comido ;) ).
Como he dicho más arriba, los servidores tienen instalado
RedHat, por lo que la mayor parte de la documentación que he
encontrado en internet no me sirve, más que nada porque toman
como base debian y lo resuelven todo a base de apt-get, además
que el RedHat 7.3 no trae por defecto la versión 2 de la
librería cyrus-sasl, y el postfix que trae no tiene soporte para
autentificación (y el sendmail tampoco); así que he
debido hacerlo todo como en los viejos tiempos... descargando ficheros tarball y compilando.
Compilando Cyrus-sasl
Primero se descarga las librerías sasl -cyrus-sasl en este caso,
no se si habrá otro desarrollo de las librerías- de la
página web correspondiente, se compilan con las opciones que
queramos, y se instalan:
tar xvfz cyrus-sasl-2.1.18.tar.gz
cd cyrus-sasl-2.1.18
./configure --prefix=/usr/local/sasl2 --disable-anon
--enable-static=yes --enable-shared=yes --enable-login --enable-cram
--with-pureconv --with-purify --with-saslauthd --enable-digest
--with-pam --enable-java --enable-gssapi --with-pwcheck --enable-otp
--enable-srp
make
su
make install
Para simplificar el acceso a la librería creo enlaces
simbólicos en /usr/local/el-directorio-que-toque,
añado /usr/local/lib en
ld.so.conf y ejecuto ldconfig.
Seguramente habrá opciones de más y cosas que
echareis en falta, pero por el momento es suficiente para mí.
Compilando Postfix
Tras eso descargamos y compilamos postfix, siguiendo los pasos del
SASL_README que viene con postfix para tener soporte para la
autentificación de los usuarios.
tar xvfz postfix-2.0.19.tar.gz
cd postfix-2.0.19
make tidy
make makefiles
CCARGS="-DUSE_SASL_AUTH -I/usr/local/sasl2/include/sasl"
AUXLIBS="-L/usr/local/sasl2/lib -lsasl2"
make
su
make install
Instalo en /usr/local/postfix,
para más adelante pasar a un entorno chroot, aunque de momento
se intenta que funcione así nomás. Creo un enlace a /usr/local/postfix/etc/postfix
en /etc, y otro a /usr/local/postfix/var/spool/postfix
en /var/spool. Se crea el
usuario postfix y el grupo postdrop,
también
se hacen
enlaces simbólicos a los ejecutables en algún directorio
que esté en $PATH (casi todos los pasos hasta aquí
están explicados en el fichero INSTALL que viene con postfix) y
se hacen las oportunas modificaciones en main.cf,
añadiendo y/o
modificando:
mydomain = midominio.es
myorigin = $myhostname
mydestination = midominio.es, otrodiminio.com
mynetworks = 192.168.1.0/24, 127.0.0.0/8
virtual_alias_maps = hash:/etc/postfix/virtual
virtual_alias_domains = untercerdominio.com
alias_maps = hash:/etc/aliases
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $mydomain
smtpd_recipient_restrictions =
permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
broken_sasl_auth_clients = yes
Creamos el fichero smtpd.conf
en /usr/local/lib/sasl2, con
el contenido
pwcheck_method: saslauthd
Lanzamos el demonio saslauthd con saslauthd
-a shadow (de momento me interesa que coja las
contraseñas del fichero de contraseñas del sistema, no
quiero hacer cambios drásticos del sistema, aparte que hay
contraseñas que no se sabe cuales son), y se lanza el postfix
con postfix -start.
Seguramente fallará a la primera, y a la segunda, y a la
tercera. Estos fallos se arreglan dándole los permisos adecuados
a los directorios indicados y poniendo el usuario y grupo correcto. Una
vez arreglado todo lanzamos el servidor de correo y hacemos las
pruebas... aquí comienzan los fallos.
Si enviamos desde cualquier sitio hacia el servidor... no hay
problemas, el postfix se comporta muy bien, si intento enviar desde el
servidor o cualquier red que esté en $mynetworks, el servidor no
pone ningún problema en hacer relay, pero desde fuera de las
redes permitidas no se puede hacer relay... ¿y donde está
el problema? os preguntareis, que no deja hacerlo aunque nos
autentifiquemos, cosa que hemos habilitado en
smtpd_recipient_restrictions. Miramos los logs y nos encontramos con lo
siguiente:
Apr 19 14:16:24 prueba
postfix/smtpd[22002]: fatal: no SASL authentication mechanisms
Apr 19 14:16:25 prueba postfix/master[21991]: warning: process /usr/libexec/postfix/smtpd pid 22002 exit status 1
Apr 19 14:16:25 prueba postfix/master[21991]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
Vaya, conque no está autentificando, pruebo a meter el fichero
smtpd.conf en todos los sitios que aparecen por internet (en el
directorio de configuración del postfix, en un directorio
llamado sasl2 dentro del de postfix, en el /usr/local/sasl2/lib y
/usr/local/sasl2/lib/sasl2). Después de unas cuantas pruebas y
unas cuantas recompilaciones más, variando todos lo imaginable,
me pongo a buscar por internet un poco más y me encuentro con
uno (lástima, no guardé el enlace) que había hecho
un enlace símbolico de la librería sasl2 a /usr/lib;
hago el enlace, lanzo el
demonio saslauthd y el postfix, y et
voila, la autentificación funciona, bueno, casi, funciona
Mozilla, Kmail, Outlook Express y 2000 y Opera; The Bat! se niega a
funcionar... Vuelvo a mirar en los logs y me encuentro con lo siguiente:
Apr 20 13:30:30 prueba postfix/smtpd[27882]: warning: SASL authentication problem: unable to open Berkeley db /etc/sasldb2: Permission denied
Apr 20 13:30:30 prueba postfix/smtpd[27882]: warning: SASL authentication problem: unable to open Berkeley db /etc/sasldb2: Permission denied
Apr 20 13:30:30 prueba postfix/smtpd[27882]: warning: SASL authentication failure: no secret in database
Apr 20 13:30:30 prueba postfix/smtpd[27882]: warning: unknown[192.168.0.43]: SASL CRAM-MD5 authentication failed
Bueno, no se puede abrir el fichero, creo /etc/sasldb2, le añado
el usuario, le doy los permisos 644, que sino no lo lee, y de paso me
entero que el método CRAM-MD5 funciona con un secreto compartido
(vamos, que en los dos extremos se sabe la contraseña) y que The
Bat! solo usa CRAM-MD5. Pruebo de nuevo y ... ahora si que funciona...
Dejamos aquí esta historia, ya que el invento todavía
está en pruebas, todavía no le he metido el antivirus
(ver encuesta adjunta), ni el control antispam. En una próxima historia continuaré.
|
|
|