Postfix LDAP GOSA PDF
Postfix LDAP GOSA PDF
Postfix LDAP GOSA PDF
0 con:
• Apache2
• php5
• Openldap
• Postfix
• Cyrus-imap
• Sieve
• TLS
• LMTP
• Amavisd-new
• SpamAssassin
• Clamv
• Mailman
• Squirrelmail
• Avelsieve
• Saslauthd
• bind9
(Avelsieve(39) (SIEVE Mail Filters Plugin for SquirrelMail) es un plugin para SquirrelMail(40) que permite
crear scripts hechos con Sieve en un servidor Cyrus IMAP que tenga habilitado el soporte para dicho lenguaje
(Tim's SIEVE daemon). Avelsieve es parte de Cyrusmaster(41), una herramienta de administración de Cyrus
basada en Web. Debería proporcionar una interfaz similar a la de los filtros de usuario a los administradores y
personal de soporte técnico. )
En esta guía no vamos a explicar como instalar un sistema debian, supondré que ya tenemos instalado debian
Lenny 5.0 en nuestro servidor, usando para ello el CD1 de la instalación y hecho una instalación mínima.
Bueno comencemos entonces.
Primeramente vamos a verificar algunas cosas en nuestro sistema debian que acabamos de instalar.
Comenzamos verificando los ficheros:
• /etc/hosts
• /etc/mailname
• /etc/hostname
• /etc/resolv.conf
• /etc/network/interfaces
• /etc/apt/sources.list
# nano /etc/hosts
# nano /etc/mailname
pri.org.cu
# nano /etc/hostname
delta.pri.org.cu
Verificamos el /etc/resolv.conf
# nano /etc/resolv.conf
search pri.org.cu
nameserver 192.168.0.2
Nota: En este momento tendremos que usar como servidor DNS el de nuestro ISP o proveedor de servicios,
ya que el DNS de nuestra red aun no se ha instalado. Esto es solo necesario si vamos a usar un repositorio en
Internet para instalar nuestro equipo, si contamos con dicho repositorio localmente en una partición del disco
duro de esta misma PC que estamos instalando, pues entonces no necesitaremos in DNS de momento.
# nano /etc/network/interfaces
# nano /etc/apt/sources.list
Esto es en caso que vayamos a utilizar un repositorio de internet, por lo que tenemos que tener especificado en
el fichero /etc/resolv.conf un DNS que sea capaz de resolvernos los nombres de máquinas: ftp.debian.org y
security.debian.org ya que de lo contrario no podremos acceder a dichero repositorio, también como es lógico
tendremos que tener un servidor Proxy en nuestra red que nos de acceso a Internet para poder usar dicho
repositorio en caso que estemos usando direcciones ip privadas dentro de una red local que no esta
directamente conectada a Internet. Si tenemos direcciones ip públicas, pues todo es una felicidad :) pues no
necesitaremos de un Proxy para acceder a Internet. Si se usa un Proxy para salir a Internet puedes debemos
crear el fichero /etc/apt/apt.conf lo creamos con el comando:
# touch /etc/apt/apt.conf
Acquire::http::Proxy “http://usuario:contraseña@proxy.tudominio.cu:3128”;
La configuración del sources.list puede variar en dependencia de la localización o ubicación del repositorio de
debian que vayamos a utilizar para nuestra instalación y del protocolo que se haya utilizado para hacerlo
accesible a toda la RED, estos son 2 ejemplos:
# nano /etc/apt/sources.list
Nota: En este caso se supone que se dispone en la red local ya de un repositorio accesible vía http y
empleando el nombre o recurso de RED: debian.tudominio.cu en caso de estar por ftp las 2 líneas quedarían
así:
Si el repositorio lo tenemos en un disco externo USB y lo vamos a usar desde ahí para la instalación entonces
debemos montar dicho disco, suponiendo que nuestro Server tiene un disco SCSI debian ve dicho dispositivo
como /dev/sda por lo que el disco usb donde tenemos el repo de debian sería /dev/sdb procedemos a montarlo
por ejemplo en el directorio /mnt vamos asumir que el disco externo tiene una sola partición en ext3
Asumimos también que el repositorio esta en la raíz del disco, es decir que no este metido dentro de ningún
directorio, entonces el sources.list quedaría así:
# nano /etc/apt/sources.list
deb file:///mnt/debian lenny main contrib non-free
deb file:///mnt/debian-security lenny/updates main contrib non-free
# aptitude update
# aptitude dist-upgrade
Instalamos rcconf
exim4 es el servidor de correo que viene por defecto con debian, al igual que en freebsd, por lo tanto podemos
detener el servicio para que no este en ejecución si no lo vamos a usar. Ejecutamos desde la consola como
root el comando:
# rcconf
Buscamos en la lista de servicios exim4 y lo desmarcamos, damos aceptar y luego detenemos el servicio:
Desintalamos exim4
Al desinstalar exim4 debian nos pedirá que le indiquemos el MTA que sustituirá al exim4, no se porque tiene
que tener uno obligatoriamente instalado, pero bueno nos va preguntando por los disponibles y escojo postfix
que es el que voy a utilizar finalmente y si nos pregunta algo al momento de instalar postfix, escogemos la
opción: Sin configuración.
# dpkg-reconfigure locales
Cuando debconf nos pregunte que locales queremos generar marcamos ALL LOCALE. Después nos pregunta
cual queremos por defecto para nuestro sistema seleccionamos es_ES.UTF8. Esperamos que se terminen de
generar los locales. Cuando termine Salimos del sistema y volvemos a entrar. Ya nuestro sistema esta en
idioma español.
Al ejecutar este domando nos pedirá la contraseña del administrador de ldap, luego corremos este comando:
# dpkg-reconfigure slapd
Ahora, para probar que el servicio de slapd está arriba y funcionando utilizamos el comando:
# ldapsearch -x -b "dc=pri,dc=org,dc=cu"
# extended LDIF
#
# LDAPv3
# base <dc=pri,dc=org,dc=cu> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# pri.org.cu
dn: dc=pri,dc=org,dc=cu
objectClass: top
objectClass: dcObject
objectClass: organization
o: pri.org.cu
dc: pri
# admin, pri.org.cu
dn: cn=admin,dc=pri,dc=org,dc=cu
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
# search result
search: 2
result: 0 Success
# numResponses: 3
# numEntries: 2
Instalamos apache2
Instalamos mysql
Nota: El caracter \ al final indica que las 3 líneas son una sola, es decir todo es una misma línea.
Instalamos phpldapadmin
http://192.168.0.2/phpldapadmin
login: cn=admin,dc=pri,dc=org,dc=cu
Clave: ******
Instalamos gosa
Una vez instalado gosa, podemos acceder a su interfaz Web para su configuración por:
http://delta.pri.org.cu/gosa
Pero antes de continuar, debemos asegurarnos que en el fichero de configuración de ldap tenemos
especificados todos estos esquemas y en este mismo orden, por lo tanto, vamos a editar dicho fichero:
# nano /etc/ldap/slapd.conf
Aclaro que para incluir todos estos esquemas a nuestro servidor ldap, deben existir dichos esquemas en el
directorio /etc/ldap/schema por lo que debemos buscarlos, copiarlos para este directorio y asegurarnos que
queden con los mismos permisos que tienen los esquemas que ya aparecen ahí ok!
Para asegurarnos que los esquemas queden con los permisos correctos usamos estos 2 comandos:
# cd /etc/ldap/schema
# find . -type d -exec chown root.openldap {} \;
# find . -type f -exec chown root.openldap {} \;
# find . -type d -exec chmod 750 {} \;
# find . -type f -exec chmod 640 {} \;
# nano /etc/ldap/slapd.conf
loglevel -1
Reiniciamos ldap
# /etc/init.d/slapd restart
Luego vamos a la web de gosa y procedemos a su configuración. Como nos indica en el 1er paso, debemos
crear este fichero:
Nota: No copie este comando del tutorial, tómelo de la Web de gosa ya que la numeración no es siempre la
misma.
Luego pulsamos el botón siguiente. La próxima página debemos escoger el idioma, seleccionamos español y
seguimos.
En el próximo paso, gosa comprobará algunos paquetes y parámetros necesarios para trabajar, en el caso de
Debian Etch había que modificar algunos valores en el php.ini pero en Debian Lenny esto no es necesario, así
que nos saltamos este paso.
Reiniciamos Apache:
Le damos actualizar a la Web de gosa y ya no debe darnos el error. Damos siguiente y viene la licencia la cual
debemos aceptar desde luego para poder continuar.
La opción que dice: Añadir automáticamente la base LDAP al DN administrador la dejamos sin marcar.
Pulsamos siguiente.
Pulsamos continuar.
En el próximo paso, solo cambio estas opciones, (las demás las dejo como están)
Pulsamos Siguiente.
Pulsamos Siguiente.
En esta página debemos crear el usuario administrador para gosa, el cual lo llamaremos admin, igual que el
administrador de ldap, pero uno no tiene nada que ver con el otro, incluso pueden tener claves distintas si
queremos y si quieres puedes escoger otro nombre de usuario para el administrador de gosa OK!
Pulsamos continuar.
En la siguiente página: Avisos y sugerencias son cosas opcionales, de modo que no haré nada de eso,
desmarco todas las opciones seleccionadas con palomas y marco No donde me permita escoger y voy a la
siguiente página.
Pulso continuar.
La siguiente página ya es el paso final, aquí debemos descargar el fichero de configuración de gosa que se va
a generar con todas las opciones que hemos ido seleccionando paso a paso, para ello pulsamos el botón:
Descargar configuración.
Bien, una vez descargado el fichero gosa.conf debemos copiarlo para nuestro servidor para: /etc/gosa luego
para asegurarnos que quede con los permisos correctos corremos los siguientes comandos:
Una vez hecho esto ya podemos finalizar pulsamos por última vez el botón: Continuar y ya está lista la
interfaz Web de gosa que será lo que usaremos para gestionar las cuentas de usuarios de nuestro servidor de
correo.
Bueno antes de ponernos a crear un VirtualHost independiente para gosa y dotarlo de soporte SSL para mayor
seguridad, vamos a instalar y configurar un servidor DNS en este Server para el dominio: pri.org.cu
Instalamos bind9
# nano /etc/bind/named.conf.local
//Zona pri.org.cu
zone "pri.org.cu" {
type master;
file "/var/cache/bind/pri.org.cu";
};
Salvamos y salimos.
Creamos los ficheros de las zonas (directa e inversa) y le ponemos los permisos.
# touch /var/cache/bind/pri.org.cu
# touch /var/cache/bind/0.168.192.in-addr.arpa
# nano /var/cache/bind/pri.org.cu
$ORIGIN pri.org.cu.
$TTL 86400
@ 21600 IN SOA delta.pri.org.cu. root.pri.org.cu. ( 2009030801 3600 3600 3600000 86400 )
21600 IN NS delta.pri.org.cu.
Salvamos y salimos.
# nano /var/cache/bind/222.168.192.in-addr.arpa
$ttl 86400
@ IN SOA delta.pri.org.cu. root.pri.org.cu. (
2009030801
3600
3600
604800
1200 )
@ IN NS delta.pri.org.cu.
0 IN PTR delta.pri.org.cu.
Ahora debemos editar el fichero /etc/bind/named.conf.options para especificarle a nuestro servidor DNS a que
servidor DNS reenviará aquellas consultas DNS que el no sea capaz de resolver.
# nano /etc/bind/named.conf.options
// forwarders {
// 0.0.0.0;
// };
Salvamos y salimos.
Reiniciamos el bind9.
# tail -f /var/log/syslog
Ahora vamos a comprobar si nuestro DNS funciona, para eso lo primero es llegarnos al fichero
/etc/resolv.conf
# nano /etc/resolv.conf
Cambiamos el servidor DNS que aparece ahí y especificamos la ip de nuestro propio server que es donde
acabamos de configurar el DNS. Debe quedar así:
search pri.org.cu
nameserver 192.168.0.2
Salvamos y salimos.
# nslookup listas.pri.org.cu
Podemos también hacer pruebas con nombres fuera de nuestra RED como por ejemplo:
Non-authoritative answer:
www.lawebdelprogramador.net canonical name = lawebdelprogramador.net.
Name: lawebdelprogramador.net
Address: 213.149.241.33
Como vemos nuestro servidor DNS funciona bien, resolviendo nombre dentro del nuestro dominio como
reenviando la consultas que no pertenecen al dominio pri.org.cu
Ahora vamos a modificar algunas opciones en apache2 y crear un VirtualHost para la Web de gosa.
# nano /etc/apache2/conf.d/security
Buscamos la línea:
ServerTokens Full
# nano /etc/apache2/conf.d/charset
Descomentamos la línea:
#AddDefaultCharset UTF-8
AddDefaultCharset ISO-8859-1
Busco las siguientes líneas y las descomento todas y que queden de esta manera:
# nano /etc/apache2/apache2.conf
<Directory "/usr/share/apache2/error">
AllowOverride None
Options IncludesNoExec
AddOutputFilter Includes html
AddHandler type-map var
Order allow,deny
Allow from all
LanguagePriority es cs de en fr it nl sv pt-br ro
ForceLanguagePriority Prefer Fallback
</Directory>
# a2enmod include
# a2enmod ssl
# a2enmod rewrite
# nano /etc/apache2/ports.conf
Buscamos la linea:
NameVirtualHost *:80
Y la cambiamos por:
NameVirtualHost 192.168.0.2:80
Editamos el fichero
# nano /etc/apache2/sites-available/default
y cambiamos la línea:
<VirtualHost *:80>
por:
<VirtualHost 192.168.0.2:80>
Reiniciamos Apache2
Ahora vamos al final del VirtualHost por defecto y agregamos un nuevo VirtualHost para gosa.
<VirtualHost 192.168.0.2:80>
ServerName gosa-admin.pri.org.cu
ServerAdmin admin@pri.org.cu
DocumentRoot "/usr/share/gosa/html"
<Directory /usr/share/gosa/html/>
Options +FollowSymLinks
AllowOverride None
order allow,deny
allow from 192.168.0.0/24
<IfModule mod_php4.c>
AddType application/x-httpd-php .php
php_flag magic_quotes_gpc Off
php_flag short_open_tag On
php_flag register_globals Off
php_flag register_argc_argv On
php_flag track_vars On
# Estas opciones son necesarias para algunas locales
php_value mbstring.func_overload 0
php_value include_path .
DirectoryIndex index.php
</IfModule>
</Directory>
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
# Reescribimos todas las peticiones a este sitio a una conexión segura es decir usando SSl
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{HTTP_HOST} gosa-admin.pri.org.cu
RewriteRule (.*) https://gosa-admin.pri.org.cu$1 [R=301,L]
ErrorLog /var/log/apache2/gosa-admin-error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/gosa-admin-access.log combined
ServerSignature On
</VirtualHost>
Hemos agregado un VirtualHost para gosa, pero ahora debemos añadir otro con soporte SSL, dejamos un
espacio y ponemos a continuación el otro VirtualHost.
# VirtualHost con soporte SSL
<VirtualHost 192.168.0.2:443>
ServerName gosa-admin.pri.org.cu
ServerAdmin admin@pri.org.cu
DocumentRoot "/usr/share/gosa/html/"
<Directory /usr/share/gosa/html>
Options +FollowSymLinks
AllowOverride None
order allow,deny
allow from 192.168.0.0/16
<IfModule mod_php4.c>
AddType application/x-httpd-php .php
php_flag magic_quotes_gpc Off
php_flag short_open_tag On
php_flag register_globals Off
php_flag register_argc_argv On
php_flag track_vars On
# Estas opciones son necesarias para algunas locales
php_value mbstring.func_overload 0
php_value include_path .
DirectoryIndex index.php
</IfModule>
</Directory>
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/gosa-admin.pem
ErrorLog /var/log/apache2/gosa-admin-error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/gosa-admin-access.log combined
ServerSignature On
</VirtualHost>
Salvamos y salimos.
# mkdir /etc/apache2/ssl
# a2ensite default-ssl
Reiniciamos apache2
# /etc/init.d/apache2 restart
http://gosa-admin.pri.org.cu
Agregamos el sockect de saslauthd dentro del chroot de postfix además cambiamos el mecanismo de
autenticación.
# nano /etc/default/saslauthd
Cambiamos:
START=no
por
START=yes
Cambiamos:
MECHANISMS="pam"
por
MECHANISMS="ldap"
Comentamos:
OPTIONS="-c"
Agregamos:
Salvamos el fichero.
Accedemos a la web de phpldapadmin y creamos una unidad organizacional llamada (servicios) donde
crearemos un usuario con el cual autenticara saslauthd en el ldap.
ou=servicios,dc=pri,dc=org,dc=cu
Dentro de esta unidad organizacional creamos un usuario llamado: saslauthd Como un Simple Security
Object. Le ponemos una clave al usuario saslauthd y escogemos md5 como formato para la clave.
Editamos: /etc/ldap/slapd.conf buscamos la sección dentro de las acl las cuales restrigen el acceso a los
atributos (userPassword,shadowLastChange).
# nano /etc/ldap/slapd.conf
access to attrs=userPassword,shadowLastChange
by dn="cn=admin,dc=pri,dc=org,dc=cu" write
by anonymous auth
by self write
by * none
access to attrs=userPassword,shadowLastChange
by dn="cn=admin,,dc=pri,dc=org,dc=cu" write
by dn="uid=saslauthd,ou=servicios,dc=pri,dc=org,dc=cu" read
by anonymous auth
by self write
by * none
# touch /etc/saslauthd.conf
# nano /etc/saslauthd.conf
Le agregamos:
ldap_servers: ldap://localhost/
ldap_bind_dn: uid=saslauthd,ou=servicios,dc=pri,dc=org,dc=cu
ldap_bind_pw: clave del user saslauthd
ldap_version: 3
ldap_timeout: 5
ldap_time_limit: 5
#ldap_deref: <none> <search|find|always|never>
#ldap_referrals: <no>
#ldap_restart: <yes>
ldap_cache_ttl: 0
ldap_cache_mem: 0
ldap_scope: <base>
ldap_search_base: dc=pri,dc=org,dc=cu
ldap_filter: (|(uid=%u)(cn=%u))
ldap_debug: 9
#ldap_tls_cacert_file: /etc/saslauthd.pem
#ldap_tls_cacert_dir: /etc/saslauthd.pem
#ldap_tls_ciphers: HIGH:MEDIUM:SSLv2:RSA
#ldap_tls_cert: /etc/saslauthd.pem
#ldap_tls_key: <none>
Cambiamos los permisos del fichero /etc/saslauthd.conf a 640 por root y 400 por el usuario sasl.
# mkdir -p /var/spool/postfix/var/run/saslauthd
Al cambiar de lugar el sock de saslauthd debemos crear este enlace simbólico ya que cuando intentemos
configurar a cyrus-imap para que autentique contra sasl, cyrus buscara el sock de sasl en el lugar que viene
originalmente. No he encontrado como indicarle a cyrus-imap que busque el sock de sasl en otra ruta.
# rmdir /var/run/saslauthd
# ln -s /var/spool/postfix/var/run/saslauthd/ /var/run/saslauthd
Reiniciamos saslauthd
Nos creamos un usuario desde Gosa en mi caso lo voy a llamar pepe con password linux para probar
saslauthd. Y probamos la autenticación.
Ahora probaremos con este comando sasl si esta autenticando bien contra ldap.
Dentro de la unidad organizacional "servicios" creamos un usuario llamado postfix Como un Simple Security
Object. Este será el usuario que usaremos para hacer todas las consultas LDAP desde postfix.
Instalando Postfix
Comenzamos a configurar postfix creamos el fichero de configuración main.cf en caso de que no exista y le
ponemos los permisos adecuados.
# touch /etc/postfix/main.cf
Ahora lo editamos lo dejamos de esta manera. Si el archivo ya existía y ya contiene líneas en su interior, pues
o las comentamos todas o las eliminamos, si lo desea puede hacer un respaldo de dicho fichero antes de
eliminar todo su contenido.
# nano /etc/postfix/main.cf
Agregamos:
# Cliente SMTP
smtp_mx_address_limit = 0
smtp_connect_timeout = 30s
smtp_helo_timeout = 60s
smtp_rcpt_timeout = 240s
smtp_quit_timeout = 240s
smtp_rset_timeout = 20s
smtp_skip_4xx_greeting = yes
smtp_skip_5xx_greeting = yes
# Cuantos errores en una transacción smtp puede cometer un cliente antes de que postfix comience a demorar
todas sus respuestas.
smtpd_soft_error_limit = 1500
# Cuantos errores en una transacción smtp puede cometer un cliente antes de ser desconectado.
smtpd_hard_error_limit = 2000
#Para Mailman
owner_request_special = no
# Chequeo de Headers
#mime_header_checks=pcre:/etc/postfix/body_checks
myhostname = delta.pri.org.cu
mydomain = pri.org.cu
myorigin = $mydomain
mynetworks_style = host
mynetworks = 127.0.0.1
mydestination = 127.0.0.1/32, localhost, $mydomain, $myhostname
proxy_read_maps = proxy:ldap:/etc/postfix/ldap/ldap-local-recipients.cf,
proxy:ldap:/etc/postfix/ldap/ldap-login-mismatch.cf,
proxy:ldap:/etc/postfix/ldap/ldap-virtual-forward.cf,
proxy:ldap:/etc/postfix/ldap/ldap-sender-access.cf
proxy:ldap:/etc/postfix/ldap/ldap-recipient-access.cf
unknown_local_recipient_reject_code = 550
show_user_unknown_table_name = yes
transport_maps = hash:/etc/postfix/transport
relayhost = [mx1.org.cu]
defer_transport = smtp
# Alias Locales
alias_database = hash:/etc/aliases
alias_maps = $alias_database
#alias_maps = $alias_database, hash:/var/lib/mailman/data/aliases
recipient_delimiter = +
mailbox_transport = lmtp:unix:/var/run/cyrus/socket/lmtp
#mailbox_transport = cyrus
debug_peer_level = 9
#virtual_alias_maps = proxy:ldap:/etc/postfix/ldap/ldap-virtual-forward.cf
#SMTP authentication
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain =
smtpd_sasl_authenticated_header = yes
broken_sasl_auth_clients = yes
# Comprobación que el FROM del email coincida con el usuario autenticado a travez de sasl.
smtpd_sender_login_maps = proxy:ldap:/etc/postfix/ldap/ldap-login-mismatch.cf
# touch /etc/postfix/sasl/smtpd.conf
# nano /etc/postfix/sasl/smtpd.conf
Agregamos:
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
log_level: 3
Salvamos el fichero
Creamos una carpeta con todos los ficheros que contendrán consultas a LDAP
# mkdir /etc/postfix/ldap
# touch /etc/postfix/ldap/ldap-local-recipients.cf
# nano /etc/postfix/ldap/ldap-local-recipients.cf
Agregamos:
server_host = 127.0.0.1
search_base = ou=people,dc=pri,dc=org,dc=cu
query_filter = (mail=%s)
result_attribute = uid
cache = no
bind = yes
bind_dn = cn=postfix,ou=servicios,dc=pri,dc=org,dc=cu
bind_pw = password
Salvamos el fichero
Nota: En la última línea el password al que se refiere es a la clave que le pusimos al usuario llamado postfix
que creamos desde phpldapadmin dentro de la unidad organizacional llamada: servicios.
# touch /etc/postfix/ldap/ldap-login-mismatch.cf
# nano /etc/postfix/ldap/ldap-login-mismatch.cf
Agregamos:
server_host = 127.0.0.1
search_base = ou=people,dc=pri,dc=org,dc=cu
query_filter = (mail=%s)
result_attribute = uid
cache = no
bind = yes
bind_dn = cn=postfix,ou=servicios,dc=pri,dc=org,dc=cu
bind_pw = password
Salvamos el fichero
Nota: En la última línea el password al que se refiere es a la clave que le pusimos al usuario llamado postfix
que creamos desde phpldapadmin dentro de la unidad organizacional llamada: servicios.
# touch /etc/postfix/ldap/ldap-recipient-access.cf
# nano /etc/postfix/ldap/ldap-recipient-access.cf
Agregamos:
server_host = 127.0.0.1
search_base = ou=people,dc=pri,dc=org,dc=cu
query_filter =
(&(objectClass=gosaMailAccount)(!(gosaMailDeliveryMode=[L]))(|(mail=%s)(gosaMailAlternateAddress=
%s)))
result_attribute = gosaMailDeliveryMode
cache = no
bind = yes
bind_dn = cn=postfix,ou=servicios,dc=pri,dc=org,dc=cu
bind_pw = password
Salvamos el fichero
Nota: En la última línea el password al que se refiere es a la clave que le pusimos al usuario llamado postfix
que creamos desde phpldapadmin dentro de la unidad organizacional llamada: servicios.
# touch /etc/postfix/ldap/ldap-sender-access.cf
# nano /etc/postfix/ldap/ldap-sender-access.cf
Agregamos:
server_host = 127.0.0.1
search_base = ou=people,dc=pri,dc=org,dc=cu
query_filter =
(&(objectClass=gosaMailAccount)(!(gosaMailDeliveryMode=[L]))(|(mail=%s)(gosaMailAlternateAddress=
%s)))
result_attribute = gosaMailDeliveryMode
cache = no
bind = yes
bind_dn = cn=postfix,ou=servicios,dc=pri,dc=org,dc=cu
bind_pw = password
Salvamos el fichero
Nota: En la última línea el password al que se refiere es a la clave que le pusimos al usuario llamado postfix
que creamos desde phpldapadmin dentro de la unidad organizacional llamada: servicios.
# touch /etc/postfix/ldap/ldap-virtual-forward.cf
# nano /etc/postfix/ldap/ldap-virtual-forward.cf
Agregamos:
server_host = 127.0.0.1
search_base = ou=people,dc=pri,dc=org,dc=cu
query_filter =
(&(objectClass=gosaMailAccount)(gosaMailDeliveryMode=[*L*])(|(mail=%s)(gosaMailAlternateAddress=
%s)))
result_attribute = gosaMailForwardingAddress
cache = no
bind = yes
bind_dn = cn=postfix,ou=servicios,dc=pri,dc=org,dc=cu
bind_pw = password
Salvamos el fichero
Nota: En la última línea el password al que se refiere es a la clave que le pusimos al usuario llamado postfix
que creamos desde phpldapadmin dentro de la unidad organizacional llamada: servicios.
Creamos una carpeta para guardar el certificado autofirmado que usara postfix en TLS.
# mkdir /etc/postfix/tls
# touch /etc/postfix/transport
# nano /etc/postfix/transport
Agregamos:
pri.org.cu :
* smtp:[mx1.org.cu]
# postmap /etc/postfix/transport
Nota: El nombre mx1.org.cu especificado en el fichero transport debe ser nuestro SmartHost es decir el
servidor de correo de nuestro ISP que es a quien entregamos nuestra mensajería, y es el mismo que
especificamos en el main.cf en la línea relayhost.
# touch /etc/postfix/sender_bcc_maps
# touch /etc/postfix/recipient_bcc_maps
# postmap /etc/postfix/sender_bcc_maps
# postmap /etc/postfix/recipient_bcc_maps
# touch /etc/postfix/pcre_cu_sender
# nano /etc/postfix/pcre_cu_sender
Agregamos:
!/\@*\.cu/ REJECT Esta cuenta solo puede recibir correos de dominios .cu
Salvamos el fichero
# touch /etc/postfix/pcre_cu_recipient
# nano /etc/postfix/pcre_cu_recipient
Agregamos:
Salvamos el fichero
El servicio lmpt de postfix por defecto se ejecuta dentro de una jaula o chroot de esta forma postfix no sera
capaz de entregarle mensaje a cyrus por este motivo tenemos que ejecutar el servicio lmtp de postfix fuera de
la jaula.
# nano /etc/postfix/master.cf
y la cambiamos por:
Salvamos el fichero
# newaliases
Usando phpldapadmin creamos un usuario llamado cyrus Como un Simple Security Object. dentro de la
Unidad Organizacional llamada: servicios le ponemos una clave y la encriptamos usando md5.
# cp /etc/cyrus.conf /etc/cyrus.conf.default
# cp /etc/imapd.conf /etc/imapd.conf.default
Editamos /etc/cyrus.conf
# nano /etc/cyrus.conf
Cambio la linea:
por
y las descomentamos.
Editamos /etc/imapd.conf
# nano /etc/imapd.conf
Busco la linea:
partition-default: /var/spool/cyrus/mail
servername: delta.pri.org.cu
newsspool: /var/spool/news
lmtp_overquota_perm_failure: yes
unixhierarchysep: no
y la cambio por
unixhierarchysep: yes
#admins: cyrus
y la descomento
admins: cyrus
#imap_admins: cyrus
y la descomento
imap_admins: cyrus
#sieve_admins: cyrus
y la descomento
sieve_admins: cyrus
popminpoll: 1
y la comento:
# popminpoll: 1
autocreatequota: 0
y la sustituyo por:
autocreatequota: 10000
sievedir: /var/spool/sieve
sieve_maxscriptsize: 32
sieve_maxscripts: 5
y las descomento:
dracinterval: 0
drachost: localhost
#sasl_mech_list: PLAIN
Busco la linea:
sasl_pwcheck_method: auxprop
y la sustituyo por:
sasl_pwcheck_method: saslauthd
Reiniciamos cyrus
#######################################################################################
# openssl s_client -connect localhost:636 -showcerts #
# #
# postmap -q pepe@pri.org.cu ldap:/etc/postfix/ldap/ldap-local-recipients.cf #
# pepe #
# imtest -a pepe -w <contraseña> -m login localhost #
# #
#######################################################################################
Instalamos el webmail
# /usr/share/squirrelmail/config/conf.pl
1. Organization Preferences
1. Organization Name : SquirrelMail
En esta otra opción podemos cambiar el logotipo de squirrelmail por una imagen hecha por nosotros
previamente que debe tener extensión .png y además debemos guardarla en la carpeta:
/usr/share/squirrelmail/images
Presionamos la tecla r para volver a menu principal, donde ahora escogeremos la opción 2.
2. Server Settings
Una vez dentro procedemos a cambiar la configuración del servidor IMAP y SMTP que son las opciones A y
B.
la dejamos asi:
la dejamos asi:
Vamos a la opción 9
9. Delimiter : detect
la dejamos asi:
9. Delimiter :/
la dejamos asi:
y la dejamos asi:
Luego de dar ENTER después de haber especificado login, nos saldrá algo como esto:
Would you like to use other login and password for all SquirrelMail
Vamos a la opción 3
3. Folder Defaults
la dejamos asi:
Vamos a la opción 4
la dejamos asi:
Vamos a la opción 5
la dejamos asi:
10. Languages
Salvamos y salimos.
y reiniciamos apache2
# nano /etc/apache2/sites-available/default
<Directory /var/www/mail/>
Options Indexes Includes FollowSymLinks
AllowOverride None
order allow,deny
allow from all
</Directory>
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
# Reescribimos todas las peticiones a este sitio a una conexión segura es decir usando SSl
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{HTTP_HOST} correo.pri.org.cu
RewriteRule (.*) https://correo.pri.org.cu$1 [R=301,L]
ErrorLog /var/log/apache2/correo-error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/correo-access.log combined
ServerSignature On
</VirtualHost>
<Directory /var/www/mail>
Options Indexes Includes FollowSymLinks
AllowOverride None
order allow,deny
allow from all
</Directory>
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/correo/correo.pem
ErrorLog /var/log/apache2/correo-error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/correo-access.log combined
ServerSignature On
</VirtualHost>
Salvamos y salimos.
# mkdir /etc/apache2/ssl/correo
# nano /etc/apache2/ports.conf
NameVirtualHost 192.168.0.2:443
Y ahora vamos a crear este enlace simbólico para el squirrelmail.
# ln -s /usr/share/squirrelmail /var/www/mail
Reiniciamos apache2
Ahora debemos ir a la web de Gosa para crearles los buzones de correo a los usuarios que hemos creado desde
dicha web, que en mi caso solo ha sido uno de momento.
Accedemos a gosa
http://gosa-admin.pri.org.cu
Entramos y nos dirigimos a la sección de administración y en ella vamos hasta la opción llamada usuarios:
Si ya teníamos una cuenta creada (la que creaste cuando configuraste saslauthd recuerdas?) dicha cuenta te
aparecerá ahí, solo que en estos momentos es solo una cuenta en el directorio ldap, de momento no tiene
permisos para usar el servicio de correo que es lo que estamos configurando en este manual, como tampoco
tiene permiso de usar el servicio de Squid y Samba, que son otros servicios que se pueden integrar a ldap
mediante gosa, pero esto lo trataré en otro manual :)
Damos un clic sobre nuestro usuario, ahí podremos editar sus propiedades, al hacerlo tendremos frente a
nosotros las siguientes opciones:
Y como seguro ya nos dimos cuentas nos encontramos en la opción Genérico, que es donde podemos poner
los datos personales del usuario, así como su foto, ahora antes de pasar a la pestaña Correo Electrónico
debemos en Administración a la opción que dice: Sistemas.
Aquí es donde vamos agregar nuestro servidor (nombre, dirección IP, MAC, etc...)
Buscamos el botón que en la ayuda nos dice: Nuevo Servidor y lo pulsamos. Agregamos el Nombre completo
de nuestro server en mi caso:
Parámetros de RED
En esta misma pestaña (Genérico) a la derecha hay una opción que dice Modo que aparece por defecto en
Bloqueado, la pasamos a: Activado.
Ahora vamos a la pestaña Bases de Datos, activamos poniendo una palomita en la opción a la derecha que
dice:
Administradores de Acceso IMAP.
Identificador del Servidor: delta.pri.org.cu
URL de conexión: {127.0.0.1:143/novalidate-cert}
Usuario Administrador: cyrus
Contraseña: ******
Puerto Sieve: 2000
Ahora regresamos a usuarios, editamos nuevamente el usuario que ya existe pulsando sobre el y nos dirigimos
a la pestaña Correo Electrónico, al llegar aquí pulsamos el botón: Crear cuenta de correo.
Genérico
Uso de Cuota
Tamaño de cuota: 50 MB
Ahora podremos ver que en la columna propiedades vemos un sobre de carta al lado de nuestro usuario que
antes no estaba, eso es señal de que ya tiene permiso para usar el servicio de correo, por lo que ya podemos
logearnos desde el webmail con dicha cuenta:
Accedemos a:
https://correo.pri.org.cu
Ahora lo que nos queda con el webmail es ponerlo los plugins para cambiar la clave los usuarios, aunque
pueden utilizar la web de gosa también para cambiar la clave y ponerle alguna pacotilla al webmail para
ponerlo bonito, los plugins que y use son:
avelsieve
compatibility
image_buttons
change_ldappass
addgraphics
quota_usage
show_user_and_ip
Más otros que trae el propio Squirrelmail. Que los puedes encontrar en. http://www.squirrelmail.org
Vamos a añadirle a nuestro squirrelmail estos plugins para ello deben bajarlos que estarán comprimidos en
ficheros .tar.gz seguramente, deben descompactarlos y copiarlos al directorio /usr/share/squirrelmail/plugins
Hay algunos plugins que es necesario hacer algún ajuste en su fichero de configuración que generalmente se
llama config.php casi siempre este fichero aparece con un nombre más largo y hay que renombrarlo, pero
bueno eso te lo explican en los comentarios dentro del mismo archivo :)
Vamos a ejecutar nuevamente el script de configuración del squirrelmail.
# /usr/share/squirrelmail/config/conf.pl
Plugins
Installed Plugins
Available Plugins:
1. abook_take
2. addgraphics
3. administrator
4. avelsieve
5. bug_report
6. calendar
7. change_ldappass
8. compatibility
9. delete_move_next
10. demo
11. filters
12. fortune
13. image_buttons
14. info
15. listcommands
16. mail_fetch
17. message_details
18. newmail
19. online_users
20. quota_usage
21. sent_subfolders
22. show_user_and_ip
23. spamcop
24. squirrelspell
25. test
26. translate
C Turn color on
S Save data
Q Quit
Como podemos ver no hay ningún plugins instalado aun y la lista de plugins disponible aparece por debajo,
comenzamos por instalar el plugins llamado: compatibility para ello solo tenemos marca el número que este
tiene en la lista de plugins y a continuación dar ENTER, en mi caso es el número 8. De esa manera instalamos
los plugins: quota_usage, message_details, administrator, delete_move_next, newmail, avelsieve, mail_fetch
show_user_and_ip que son los plugins que no hay que hacerles ningún tipo de configuración antes de
instalarlos, una vez que tengamos instalados todos estos, pues pasamos a otros de uno en uno.
Comanzamos por: change_ldappass que es el plugins necesario para que nuestros usuarios puedan cambiar su
contraseña de correo desde el webmail, aunque también puede hacerlo desde gosa, para ello vamos a
/usr/share/squirreilmail/plugins y buscamos el plugins, entramos al directorio y buscamos un fichero que se
llama: config.php lo editamos y buscamos las liguientes líneas:
$ldap_base_dn = ´dc=pri,dc=org,dc=cu´;
Salvamos y de la misma forma en que instalamos los plugins anteriores instalamos este. En el caso de plugins
llamado online_users hay que editar el config.php de este y especificarle los datos de la base de datos mysql
donde este guardara dicha información, como hasta el momento no tenemos dicha base de datos, pues vamos
a crearla, lo primero es instalar phpmyadmin si no lo hemos hecho aun.
Accedemos al mismo y creamos una base de datos y le ponemos un nombre, en mi caso la llamaré: mail con
este código creamos la tabla onlineusers en la base de datos:
CREATE TABLE IF NOT EXISTS `onlineusers` (
`ou_timestamp` int(15) NOT NULL default '0',
`ou_user` varchar(40) NOT NULL default '',
`ou_right_main` varchar(100) NOT NULL default '',
PRIMARY KEY (`ou_timestamp`),
KEY `ou_user` (`ou_user`),
KEY `ou_right_main` (`ou_right_main`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Ahora vamos a crear un user en mysql y darle acceso a la base datos que acabamos de crear, para ello
usaremos phpmyadmin. Una vez realizado esto regresamos al fichero config.php del plugins online_users y
especificamos estos datos en él salvamos e instalamos el plugins. Bueno el trabajo con el resto de los plugins
es similar, leer las indicaciones que dice antes de instalarlo ok!
Bueno una cosa más con el squirrelmail, vamos añadir otra tabla a la base de datos mysql que creamos hace
poco para ser utilizada para la libreta de direcciones de los usuarios, para ello nuevamente accedemos a la web
de phpmyadmin entramos como root y ejecutamos este código para agregar una 2da tabla a la base de datos
mail.
Una vez hecho esto vamos a la konsola y ejecutamos el scripts de configuracion de Squirrelmail y entramos
en la opción 9. Y veremos esto:
Database
1. DSN for Address Book :
2. Table for Address Book : address
mysql://user_mysql:clave@localhost/nombre_base_datos
donde:
Ahora hacemos lo mismo en la opción 3 pero antes de eso nos llegamos nuevamente a phpmyadmin y
creamos una 3ra tabla con este código:
Ahora si podemos configurar la opción 3 como lo hicimos con la 1, se pone exactamente igual ok!
Instalamos mailman
# nano /etc/mailman/mm_cfg.py
DEFAULT_EMAIL_HOST = 'pri.org.cu'
DEFAULT_URL_HOST = 'listas.pri.org.cu'
DEFAULT_SERVER_LANGUAGE = 'es'
MTA='Postfix'
# nano /etc/apache2/sites-available/default
# /etc/init.d/apache2 restart
# /var/lib/mailman/bin/genaliases
# nano /etc/postfix/main.cf
Buscamos las lineas:
alias_maps = $alias_database
#alias_maps = $alias_database, hash:/var/lib/mailman/data/aliases
#alias_maps = $alias_database
alias_maps = $alias_database, hash:/var/lib/mailman/data/aliases
# newaliases
# /etc/init.d/postfix restart
# newlist mailman
# newlist debian-cu
# /etc/init.d/mailman start
Ahora que ye tenemos una lista creada (debian-cu) podemos acceder a la Web de administración de Mailman
por:
http://listas.pri.org.cu/mailman/admin
Configurar otras opciones de la lista, suscribir usuarios, crear otras listas, etc...
Ahora vamos a instalar la herramienta isoqlog para las estadísticas del correo
# /etc/isoqlog/isoqlog.conf
logtype = "postfix"
logstore = "/var/log/mail.log"
domainsfile = "/etc/isoqlog/isoqlog.domains"
outputdir = "/var/www/isoqlog"
htmldir = "/usr/share/isoqlog/htmltemp"
langfile = "/usr/share/isoqlog/lang/spanish"
hostname = "delta.pri.org.cu"
maxsender = 100
maxreceiver = 100
maxtotal = 100
maxbyte = 100
Y en en el fichero
# /etc/isoqlog/isoqlog.domains
pri.org.cu
# nano /etc/crontab
# /etc/init.d/cron restart
# nano /etc/apt/sources.list
Salvamos el fichero
ejecutamos
# aptitude update
# nano /etc/amavis/conf.d/15-content_filter_mode
# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.
#
# Default antivirus checking mode
# Uncomment the two lines below to enable it back
#
@bypass_virus_checks_maps = (
\%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);
#
# Default SPAM checking mode
# Uncomment the two lines below to enable it back
#
@bypass_spam_checks_maps = (
\%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
Finalmente, editamos:
# nano /etc/amavis/conf.d/50-user
#use strict;
#
# Place your configuration directives here. They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#
$mydomain =pri.org.cu;
#$myhostname = delta.pri.org.cu;
$max_servers = 5; # number of pre-forked children
$max_requests = 10; # retire a child after that many accepts
$inet_socket_bind = '127.0.0.1';
@inet_acl = qw( 127.0.0.1 );
$forward_method = 'smtp:[127.0.0.1]:10025';
$notify_method = 'smtp:[127.0.0.1]:10025';
$X_HEADER_LINE = " $myproduct_name at delta.pri.org.cu";
# nano /etc/postfix/master.cf
# /etc/init.d/postfix restart
Ejecutamos:
# netstat -tap
Y debemos observar 2 lineas como estas, dentro de todas las que muestra en pantalla:
#pyzor
use_pyzor 1
pyzor_path /usr/bin/pyzor
pyzor_add_header 1
#razor
use_razor2 1
razor_config /etc/razor/razor-agent.conf
#bayes
use_bayes 1
use_bayes_rules 1
bayes_auto_learn 1
Después agregamos los usuarios clamav al grupo amavis y reiniciamos los demonios:
Reinicie amavisd-new
# /etc/init.d/amavis restart
# nano /etc/clamav/freshclam.conf
y agregamos al final:
# Proxy: http://proxy.pri.org.cu:3128/
HTTPProxyServer proxy.pri.org.cu
HTTPProxyPort 3128
#HTTPProxyUsername usuario
#HTTPProxyPassword clave
Reiniciamos clamav
# /etc/init.d/clamav-daemon restart
# /etc/init.d/clamav-freshclam restart
Autores:
Racial Pérez Hernández – Admin. de Redes Dirección Provincial de Salud – P. del Río
e-mail: racielprz@minsap.pri.sld.cu
Eduardo R. Barrera Pérez – admin. de Redes Dirección Provincial de Jovenclub – Pinar del Ró
e-mail: ebarrera@pri.jovenclub.cu