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.

