LDAP -- Instal·lació servidor de correu amb LDAP

En un primer moment volia muntar el servidor de correu amb Postfix, Cyrus i LDAP. Sobretot me n'havien parlat molt bé de cyrus, però tot i així l'he trobat massa críptic i m'estava endarrerint en la tasca de deixar el servidor de correu muntat amb LDAP.

Així que al final muntarem el servidor de correu Postfix, Courier i LDAP. Al final he seguit les instruccions de la web de Bulma: http://bulma.net/body.phtml?nIdNoticia=2013.

Instal·lació del directori LDAP

Bé, això ja s'ha explicat en altres llocs. Només dir-vos que és recomanable que els serveis del servidor s'executin amb permisos d'usuaris que no siguin "root" per evitar problemes de seguretat. Tanmateix de moment no tenim informació tant important com per perdre-hi molt de temps.

Els correus dels usuaris estaran en la branca "ou=users,dc=guifi,dc=net", igual que els usuaris del sistema. Si no disposen de la classe posixAccount, no s'hi podran identificar, i si no tenen la classe couriermailaccount no disposaran de correu-e. Més endavant afegirem algunes dades, i en modificarem algunes altres per poder comprovar el seu funcionament.

Configurant Postfix

Per començar hem d'instal·lar el postfix, postfix-ldap, postfix-doc, postfix-pcre. Suposo que ja sabem com cal instal·lar-los a Debian.

apt-get install postfix postfix-ldap postfix-doc postfix-pcre

Potser us hauríeu d'instal·lar el paquet courier-ldap, per a poder agafar el schema i poder afegir les entrades. Un cop instal·lat podeu copiar el schema en el directori de schemes de l'LDAP.

cp /usr/share/doc/courier-ldap/authldap.schema /etc/ldap/schema/courier.schema

L'afegim en el fitxer de configuració de l'LDAP:

include         /etc/ldap/schema/courier.schema 

Aquí hem decidit canviar de schema, per a solucionar alguns problemes amb el schema de courier i l'obligació de posar el homeDirectory. Així que utilitzarem el schema "qmail.schema" que podeu crear des d'aquesta pàgina web: http://www.qmail-ldap.org/wiki/Qmail.schema.

La configuració del fitxer (/etc/postfix/main.cf) serà la següent. Només hi posem els canvis:

# --
# Configuració feta des de 0
# --

# El nom del domini principal
myorigin = guifi.net   
myhostname = mail.$myorigin

# Els dominis dels que acceptem correu.
# Per evitar bucles cal afegir el: localhost, $myhostname
mydestination = $myhostname localhost guifi.net guifi.cat

# Inciquem com s'ha d'enviar el correu local. Per defecte: local
# Indicarem que no hi ha transport local, només virtual
local_transport = virtual
local_recipient_maps =

# Indiquem de quines interfícies rebem correu i amb quins protocols
inet_interfaces = all
inet_protocols = all
    
# La mida de la bústia i dels missatges
virtual_mailbox_limit = 0
mailbox_size_limit = 0
message_size_limit = 0
# Aquest paràmetre no l'entenc
recipient_delimiter = +

# El banner del dimoni smtpd adjuntarà en els correus
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)

# Evitem que els usuaris que no tenen domini puguin
# enviar un correu amb el domini per defecte
append_dot_mydomain = no

# Evitem notificacions biff (bé, no se que és, però així funciona)
biff = no

# El fitxer d'aliases dels usuaris del sistema o no
# i se'ls hi ha d'enviar un correu. Exemple:
# root: correu_root@guifi.net
# postmaster: correu_postmaster@guifi.net
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

# Si no pots enviar directament (perquè no tens connexió a Internet)
# pots indicar quin servidor SMTP farà l'enviament.
relayhost =

# Les xarxes que poden utilitzar aquest servidor SMTP
# Si no voleu problemes poseu-hi només la local
mynetworks = 127.0.0.0/8



# 
# Dominis Virtuals
# --

# La forma com d'enviarà el correu dels dominis virtuals (virtual)
virtual_transport = virtual

# El directori on es guardaran les busties dels comptes virtuals
virtual_mailbox_base = /var/mail

# L'orígen de dades dels correus virtuals
#virtual_mailbox_maps = hash:/etc/postfix/vmailbox 
virtual_mailbox_maps = ldap:ldapvmap
ldapvmap_server_host = ldap.guifi.net
ldapvmap_server_port = 389
ldapvmap_bind = no
ldapvmap_search_base = ou=users,dc=guifi,dc=net
ldapvmap_query_filter = (&(mail=%s)(accountStatus=active)(objectClass=qmailUser))
ldapvmap_result_attribute = mailMessageStore
ldapvmap_result_format = %s/Maildir/


# Els dominis dels correus virtuals (def: $virtual_mailbox_maps)
#virtual_mailbox_domains =

# L'usuari i grup amb que es guardarà els missatges en el disc.   
# 8: és l'uid de l'usuari i grup mail
virtual_minimum_uid = 1
virtual_uid_maps = static:8
virtual_gid_maps = static:8



#
# De moment no crearem alies

Un cop tenim la configuració podem re-arrencar el postfix i adaptar l'usuari de proves d'exemples anteriors per afegir-hi les dades del correu. En el nostre usuari, com que ja té un directori d'usuari s'usarà el seu i els id d'usuari i grup. Només haurem d'afegir el directori de la bústia (no us oblideu de la barra final per indicar que el format és MailDir. Això ho hem modificat amb el PHPLDAPADMIN.

Aquest compte quedarà així:

dn: uid=tester,ou=users,dc=guifi,dc=net
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: qmailUser
uid: tester
cn: Usuari de Proves
uidNumber: 2000
gidNumber: 2000
homeDirectory: /home/tester
loginShell: /bin/bash
mail: tester@guifi.net
accountStatus: active
mailMessageStore: guifi.net/tester
userPassword: {CRYPT}P8WUXyF0ESylQ

Caldrà crear el directori "guifi.net" a /var/mail o en el directori que hem indicat

Provem-ne el funcionament

Per provar el funcionament, podem obrir una sessió d'internet contra el port 25 (SMTP) i provar d'enviar un correu a l'usuari que tenim. Feu-ho així:

joia:~ XinXic$ telnet mail.guifi.net 25
Trying 10.145.4.4...
Connected to mail.guifi.net.
Escape character is '^]'.
220 mail.guifi.net ESMTP Postfix (Ubuntu)
helo servidor.de.correu.des.don.senvia
250 mail.guifi.net
mail from: qui_envia_el_correu@gmail.com
250 Ok
rcpt to: tester@guifi.net
250 Ok
data
354 End data with .
To: Aquest és el text del destinatari
Subject: Aquest és l'assumpte
Aquest és el text del cos del missatge.
S'acaba el text amb un punt i return.
.
250 Ok: queued as B9C4710116
quit
221 Bye
Connection closed by foreign host.

Si mireu en el fitxer log veureu si ha funcionat o no (/var/log/mail.log). Penseu que els errors que tingueu els podreu solucionar mirant en aquell fitxer (jo en tenia un munt). Si ha funcionat us haurà creat el directori (/var/mail/guifi.net/tester/Maildir)

Intal·lació i configuració de Courier

Un cop instal·lat el sistema del servidor de correu i de veure com funciona, només ens cal instal·lar el courier per poder llegir el correu des de fora. En principi només instal·larem el POP3, però realment un cop configurat un, es poden instal·lar la resta (IMAP, POP3S, etc).

El primer que cal fer és instal·lar els paquets de courier:

apt-get install courier-base courier-authdaemon courier-ldap y courier-pop

Fet això configurem els següents fitxers, canviant els paràmetres que hi indiquem:

/etc/courier/authdaemonrc

authmodulelist="authldap authpam"

/etc/courier/authldaprc

LDAP_SERVER             ldap.guifi.net
LDAP_PORT               389
LDAP_PROTOCOL_VERSION   3
LDAP_BASEDN             ou=users,dc=guifi,dc=net
LDAP_BINDDN             cn=admin,dc=guifi,dc=net
LDAP_BINDPW             contrasenyaAdmin
LDAP_TIMEOUT            15
LDAP_AUTHBIND           1
LDAP_MAIL               mail
LDAP_FILTER             (accountStatus=active)
LDAP_GLOB_UID           mail
LDAP_GLOB_GID           mail
LDAP_HOMEDIR            mailMessageStore
#LDAP_MAILDIR            ./Maildir
LDAP_FULLNAME           cn
LDAP_CRYPTPW            userPassword
LDAP_DEREF              never
LDAP_TLS                0

En principi no caldria afegir l'usuari i la contrasenya, perquè no hem posat cap regla d'accés de lectura de les dades de l'LDAP. Però si decidiu posar filtres d'accés a les dades (que són molt recomanables) caldrà que indiquis un usuari que pugui accedir a la lectura de totes les dades.

Anem a provar a veure que tal funciona, identificant-nos-hi i demanant un llistat dels correus:

joia:~ XinXic$ telnet mail.guifi.net 110
Trying 10.138.4.4...
Connected to mail.guifi.net.
Escape character is '^]'.
+OK Hello there.
user tester@guifi.net
+OK Password required.
pass passwdtester
+OK logged in.
list
+OK POP3 clients that break here, they violate STD53.
1 415
.
quit
+OK Bye-bye.
Connection closed by foreign host.
joia:~ XinXic$ 

Conclussió

Ara ja tenim el servidor de correu funcionant, podeu agafar qualsevol client de correu i configurar per rebre els correus mitjançant POP3 i enviar-los mitjançant SMTP.

Tanmateix, aquesta instal·lació és molt perillosa si els usuaris hi accedeixen des d'arreu d'Internet, doncs no es demana contrasenya per a poder enviar correu electrònic. Tanmateix tenint el paràmetre "mynetworks = 127.0.0.0/8" limitem l'enviament a les nostres adreces des de l'exterior.

Més tard farem una entrada per configurar el servidor per que es demani indentificació, comprovi que el remitent és qui diu ser i es pugui enviar correus a tot arreu.

pàgina generada en: 0.496 segons.