miércoles, 9 de diciembre de 2009

Centos 5.x: Dovecot + Postfix +Ldap

Como no hay dns de por medio no problema, si lo hay bien por ustedes.

Nombre del Dominio: example.com
Hostname del Servidor de Correo: mail.example.com
IP del Servidor: 172.16.4.6
Protocolo Inbound: IMAP Puerto: 143
Protocolo Outbound: SMTP Puerto: 25
Criptografia de ldap: crypt

Vamos a usar los mismo directorios particulares de cada usuario, no vamos a usar los virtuales, la mayoria de los ejemplos en linea usan virtuales, pero aqui tenemos ya un monton de archivos en cada usuario en su /home, gracias a samba podemos hacer esto.

Tipo de Mail: Maildir/

Aqui quiero pensar que ya tenemos un servidor ldap corriendo para esta organizacion: example.com estructurada asi:

Users
Groups
Computers
Imap

Samba basa su informacion en ldap asi que debe estar en operacion, lo que vamos hacer es usar esta misma informacion para que dovecot se autentifique via ldap, para ello estamos usando a Mandriva MDS, ya que ellos nos proporcionan el schema para ldap llamado mail.schema + mmc.schema.

Esto esta en otro blog mio.

Por ultimo, todos sabemos que por default sendmail viene como servicio de correo saliente, pero esta vez, postfix va a ser el encargado, asi que debemos detener el servicio de sendmail y deshabilitar que arranque cada que reiniciemos el equipo.

Bien, vamos empezando.

1; Editamos el archivo /etc/hosts y agregamos nuestro hostname:

172.16.4.6 mail.example.com mail

2; Editamos postfix-->main.cf

queue_directory = /var/spool/postfix
daemon_directory = /usr/libexec/postfix
mail_owner = postfix
myhostname = mail.example.com
mydomain = example.com
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
local_recipient_maps = unix:passwd.byname $alias_maps
unknown_local_recipient_reject_code = 550
mynetworks = 172.16.0.0/16, 127.0.0.0/8
relay_domains = $mydomain
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
home_mailbox = Maildir/
smtpd_banner = $myhostname ESMTP $mail_name
local_destination_concurrency_limit = 1
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man

No necesitamos nada mas de postfix, si desean agregar alias pues editen el archivo /etc/aliases.

3; Editamos dovecot->/etc/dovecot.conf

protocol imap {
listen = *:143
}
disable_plaintext_auth = no
log_path = /var/log/dovecot.log
info_log_path = /var/log/dovecot-info.log
log_timestamp = "%b %d %H:%M:%S "
syslog_facility = local5
ssl_disable = yes
login_user = dovecot
login_greeting = Bienvenidos.
mail_debug = yes
protocol imap {
}

protocol lda {
postmaster_address = postmaster
}
auth_username_format = %Lu
auth_verbose = yes
auth_debug = yes
auth_debug_passwords = yes
auth default {
mechanisms = plain
passdb pam {
}

passdb ldap {
args = /etc/dovecot.ldap
}

userdb passwd {
args = /etc/dovecot.ldap
}

userdb ldap {
args = /etc/dovecot.ldap
}

user = root
}

4; Editamos dovecot para ldap-> dovecot.ldap

hosts = 127.0.0.1
dn = cn=root,dc=example,dc=com
dnpass = password-ldap
tls = no
auth_bind = yes
auth_bind_userdn = cn=%u,ou=example,ou=com
ldap_version = 3
base = ou=Users,dc=example,dc=com
scope = subtree
user_attrs = homeDirectory=home,uidNumber=uid,gidNumber=gid
user_filter = (&(objectClass=posixAccount)(uid=%u))
pass_attrs = uid=user,userPassword=password
pass_filter = (&(objectClass=posixAccount)(uid=%u))
default_pass_scheme = CRYPT

5; Agregamos a dovecot en syslog y creamos los archivos de logeo, reinciamos syslog

/etc/syslog.conf:

local5.* /var/log/dovecot.log

touch /var/log/dovecot.log
touch /var/log/dovecot-info.log

service syslog restart

7; Apagar a sendmail y deshabilitar su arranque automatico.

service sendmail stop
chkconfig sendmail off

8; Reiniciamos los servicios: postfix/dovecot.
service postfix start
service dovecot start

Aqui ya tenemos que tener 2 nuevos puertos esperando peticiones de clientes, ademas de ldap. Checamos:

netstat --inet -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:ldap *:* LISTEN
tcp 0 0 mail.example.co:netbios-ssn *:* LISTEN
tcp 0 0 localhost:netbios-ssn *:* LISTEN
tcp 0 0 *:imap *:* LISTEN
tcp 0 0 *:smtp *:* LISTEN
tcp 0 0 mail.example.c:microsoft-ds *:* LISTEN
tcp 0 0 localhost:microsoft-ds *:* LISTEN
udp 0 0 mail.example.com:netbios-ns *:*
udp 0 0 *:netbios-ns *:*
udp 0 0 mail.example:netbios-dgm *:*
udp 0 0 *:netbios-dgm

Ahi estan ldap, postfix y dovecot.

Supongamos que tenemos un usuario de nombre pepito, para probar, ese usuario tiene un folder en home:

/home/pepito.

Como aun no ha recibido correo, no existe su estructura tipo mbox, por ello necesittamos crearle su folder llamado Maildir en su folder:

mkdir /home/pepito/Maildir

Cambiamos los permisos:

chmod -R 700 /home/pepito
chown -R pepito:users /home/pepito

Nos vamos a thuderbird y configuramos su cuenta, una vez que nos aparece la ventana donde nos solicita el passwd, se lo damos y nos enviamos un correo de prueba.

Debe de recibirlo el mismo, no creo que haya problemas.

Dovecot tiene habilitado el log:

mail_debug = yes
auth_verbose = yes
auth_debug = yes
auth_debug_passwords = yes

Si desean pueden cambiarlos a no, cuando ustedes esten seguros que ya esta operando al 100%.

Pueden leer el archivo /var/log/maillog para que veabn que esta haciendo postfix.

Es todo por el momento, animo!!!

No hay comentarios: