PeruLinux S.A.C.: Curso: Experto en Linux Configuración de Servidor de Correo Postfix con SASL y Dovecot, Web Mail Horde. Autor: Joel Barrios Dueñas Licencia Creative Commons Introducción Postfix es un servidor de Correo Electrónico (MTA) muy funcional y sencillo de configurar, cuenta con múltiples funcionalidades para el envío y recepción de correo y configuración de cuentas y dominios virtuales, permite integrarse con filtros de correo antispan y antivirus y con cuentas de un servidor de directorio (ldap).
Software requerido: yum install postfix cyrus-sasl cyrus-sasl-plain cyrus-sasl-md5 dovecot
Configurar Postfix en Arranque automático. service sendmail stop chkconfig sendmail off service postfix start chkconfig postfix on SASL. ¿Que es SASL? SASL es el acrónimo de "Simple Authentication and Security Layer" que significa "Capa de Seguridad y Autenticación Simple". SASL es un método para añadir soporte para autenticación a los protocolos como SMTP. Procedimientos Edite /usr/lib/sasl/smtpd.conf y verifique que esté el siguiente contenido: pwcheck_method: saslauthd Para activar el soporte SASL, se debe asignar al menos una contraseña a cualquier cuenta de usuario en el sistema. /usr/sbin/saslpasswd2 -c
[email protected] Debido a que Postfix gtrabaja por defecto con chroot(), y es conveniente que siga haciendolo así, es perferible mover /etc/sasldb2 hacia la ruta acequible para postfix que corresponde a /var/spool/postfix/etc/sasldb2: mv /etc/sasldb2 /var/spool/postfix/etc/sasldb2 A fin de mantener un nivel de seguridad aceptable y permitir al mismo tiempo que ostfix pueda acceder al fichero de contraseñas, debemos asignar nuevos permisos a /var/spool/postfix/etc/sasldb2: chmod 640 /var/spool/postfix/etc/sasldb2
chgrp postfix /var/spool/postfix/etc/sasldb2 Lo anterior designa permisos de lectura y escritura para root y de solo lectura para el usuario postfix. Crear enlace simbólico para poder utilizar el mandato saslpasswd normalmente y no tener que realizar el tedioso procedimiento de tener que copiar de nuevo dicho fichero cada vez que se de da alta o se modifique una cuenta. ln -s /var/spool/postfix/etc/sasldb2 /etc/ De de alta todas las cuentas de usuario restantes: /usr/sbin/saslpasswd2 -c
[email protected] /usr/sbin/saslpasswd2 -c
[email protected] Etc. Levantar el demonio saslauthd y añadirlo a los servicios activos: /sbin/service saslauthd start /sbin/chkconfig saslauthd on
DOVECOT IMAP y POP3 Configuraremos de una vez el protocolo mediante el cual el usuario recuperará su correo.
vi /etc/dovecot.conf protocols = imap pop3 listen = [::]
chkconfig dovecot on
Postfix. ¿Que es Postfix? Postfix es un MTA, que es acrónimo de "Mail Transport Agent" y que a su vez significa "Agente de Transporte de Correo". Postfix fue desarrollado como un reemplazo para Sendmail. Postfix es la versión libre de Secure Mailer de IBM cuyo desarrollo fue iniciado por Wietse Vename en el T.J. Research Lab propiedad de IBM. Postfix es una magnífica alternativa hacia Sendmail, el cual desafortunadamente posee un pésimo historial de seguridad. ¿Por que se sigue usando Sendmail? Porque viene incluido como MTA por defecto en la mayoría de las distribuciones de Linux y otros sabores de UNIX. Postfix es menos complicado de configurar, es más rápido, fácil de administrar y seguro. Postfix trabaja por defecto dentro de una jaula (chroot) localizada en /var/spoo/postfix, y por tal motivo es todavía más seguro reduciendo enormemente los riesgos para el sistema en el caso del surgimiento de una vulnerabilidad. Procedimientos. Editar al final del fichero /etc/postfix/aliases la línea que por defecto especifica como alias de root a postfix, lo cual se debe cambiar y definir en su lugar una cuenta de usuario válida. ¡Eso es algo muy importante!
root: usuario Al terminar, ejecute el mandato newaliases a fin de convertir /etc/postfix/aliases en /etc/postfix/ aliases.db. newaliases Editar /etc/postfix/main.cf y donde se definirán algunas variables. Redundar el nombre del servidor, el cual también debe ser un nombre de dominio completamente resuelto por un DNS: myhostname = mail.midominio.com Definase además el dominio a utilizar. mydomain = midominio.com Redundar el dominio a utilizar para los mensajes salientes. Por defecto se añade $myhostname, pero si así se desea, pude establecerse $mydomain. myorigin = $myhostname En Red Hat Enterprise Linux y sistemas operativos derivados se establece localhost como única interfaz para escuchar peticiones. Puede comentarse la línea, puesto que Postfix escuchará peticiones por todas las interfaces por defecto: # inet_interfaces = localhost Defina los dominios a administrar: mydestination = $myhostname, localhost.$mydomain, dominio.virtual Defina los equipos a los que se permitirá enviar libremente el correo a través de postfix: mynetworks = 192.168.0.0/24, 127.0.0.0/8 Si desea incrementar el nivel de seguridad o bien simplemente le interesa utilizar el método de autenticación que se explica más adelante, puede definir una lista de IP contenida en un fichero, el cual incluirá además de las IP propias del servidor y las de aquellos equipos a los que verdaderamente se permitirá enviar correo libremente a través de postfix: mynetworks = $config_directory/mynetworks Un ejemplo del contenido de mynetworks sería: 127.0.0.0/8 192.168.0.254 Si se utiliza una dirección IP pública, como por ejemplo 148.240.39.174, nunca se defina el segmento de este en mynetworks (148.240.39.0/24), ya que de otro modo cualquier otro equipo de dicha red tendría permitido hacer uso del servidor de correo. Redundemos los dominios que se permite para enviar correo designando la variable $mydestination: relay_domains = $mydestination A fin de poder aprovechar las funciones de filtrado y administración del correo que posee
procmail, defina en la ruta donde se localiza éste: mailbox_command = /usr/bin/procmail Si se va a utilizar autenticación, debe definirse lo siguiente: smtpd_sasl_auth_enable = yes smtp_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = $myhostname smtp_sasl_auth_enable = yes broken_sasl_auth_clients = yes smtp_sasl_password_maps = hash:/etc/postfix/saslpass smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unknown_client, check_relay_domains Crear el fichero /etc/postfix/saslpass y definir una cuenta específica por cada dominio administrado que además deberá autenticar escribiendo la contraseña correspondiente y que previamente se asignó con el mandato saslpasswd2. mail.midominio.com
[email protected]:clave-del-usuario dominio.virtual
[email protected]:clave-del-usuario Se deben crear cuentas en el sistema para este fin particular, y no olvidar que a fin de poder ser utilizadas por Postfix, se asignan las contraseñas para dichas cuentas con el mandato saslpasswd2. Se debe convertir /etc/postfix/saslpass a /etc/postfix/saslpass.db postmap /etc/postfix/saslpass Asignar permisos apropiados a /etc/postfix/saslpass y /etc/postfix/saslpass.db chmod 600 /etc/postfix/saslpass* La configuración ha concluido, y solo resta arrancar o reiniciar Postfix. service postfix restart
Alta de las cuentas de correo. Las cuentas de correo deben de darse de alta sin acceso a intérprete de mandatos, recordando que, a diferencia de los protocolos IMAP o POP3, al acceso hacia el protocolo SMTP le será asignado una contraseña con el mandato saslpasswd2 en lugar del mandato passwd. useradd -s /bin/false -c "Nombre del usuario" usuario saslpasswd2 -c usuario Si necesita cambiar la contraseña a cualquier usuario, utilice el mandato saslpasswd sin parámetros adicionales: saslpasswd2 usuario Si desea dar de baja la contraseña de cualquier usuario, utilice el siguiente mandato: saslpasswd2 -d usuario
Finalmente, para poder recuperar el correo ya sea a través de IMAP o POP3, si será necesario asignar una contraseña con el mandato passwd: passwd usuario
Probando el servicio SMTP. telnet mail.midominio.com 25 Lo anterior devuelve la siguiente salida: Trying 192.168.0.254... Connected to mail.midominio.com. Escape character is '^]'. 220 mail.midominio.com ESMTP Postfix Verifique mandato "helo" para el dominio helo mail.midominio.com Lo anterior devuelve lo siguiente: 250 mail.midominio.com Verifique funciones del servidor con mandato "ehlo" ehlo mail.midominio.com Lo anterior debe devolver algo como lo siguiente. 250-mail.midominio.com 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5 250-AUTH=PLAIN LOGIN DIGEST-MD5 CRAM-MD5 250-XVERP 250 8BITMIME Note las dos líneas que especifican los métodos de autenticación. 250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5 250-AUTH=PLAIN LOGIN DIGEST-MD5 CRAM-MD5 Ambas especifican los métodos soportados. La segunda particularmente se utiliza para los clientes de correo electrónico que autentican con errores o bien con el viejo y obsoleto protocolo "AUTH=PLAIN", como sería el caso de Outlook Express 4. Para salir del intérprete de mandatos ejecute el mandato "quit". Solo resta probar la configuraciñon del servidor de correo con cualquier cliente de correo electrónico, el cual deberá de configurarse con soporte para autenticación para el protocolo SMTP. Puede seleccionarse PLAIN, LOGIN, DIGEST-MD5 o CRAM-MD5 como método de autenticación.
Parámetros adicionales para Postfix. Hay algunos parámetros adicionales para /etc/postfix/main.cf que permitirán controlar mejor el comportamiento del servidor de correo de manera sencilla. mailbox_size_limit Si se desea limitar el tamaño máximo de los buzones de correo, puede hacerse a través de mailbox_size_limit asignando cualquier valor deseado en bytes. Por ejemplo, si se quiere limitar el tamaño de los buzones de correo a 20 MB, por supuesto factorizando por 1024, se utilizaría la siguiente línea: mailbox_size_limit = 20480000
message_size_limit Si se desea limitar el tamaño máximo de un mensaje de correo electrónico, puede hacerse a través de message_size_limit. Por ejemplo, si se quiere limitar el tamaño máximo de un mensaje a 5 MB, se utilizaría la siguiente línea: message_size_limit = 5120000
recipient_canonical_maps Si se desea transformar las direcciones de correo externas en direcciones de correo internas, se debe añadir la siguiente línea: recipient_canonical_maps = hash:/etc/postfix/recipient_canonical Si por ejemplo, entregar el correo para
[email protected] en la cuenta local pepe y
[email protected] en la cuenta local pedro, dentro de /etc/postfix/sender_canonical debería ponerse lo siguiente:
[email protected] pepe
[email protected] pedro Al terminar de editar el fichero, se debe ejecutar el siguiente mandato para convertir /etc/postfix/recipient_canonical en /etc/postfix/recipient_canonical.db: postmap /etc/postfix/recipient_canonical
sender_canonical_maps Si se desea transformar direcciones de correo internas en direcciones de correo externas, se debe añadir la siguiente línea: sender_canonical_maps = hash:/etc/postfix/sender_canonical Por ejemplo, si se tiene un dominio inválido o no registrado como sería miredlocal.org, y se desea que el correo emitido desde la cuenta julio salga como
[email protected], y se desea que el correo emitido por pablo salga como
[email protected], /etc/postfix/recipient_canonical debería ponerse lo siguiente: julio
[email protected] pablo
[email protected] Al terminar de editar el fichero, se debe ejecutar el siguiente mandato para convertir /etc/postfix/sender_canonical en /etc/postfix/sender_canonical.db: postmap /etc/postfix/sender_canonical
Manejo del Spam y correo proveniente de fuentes indeseables. check_client_access Hay varias formas de hacer frente al Spam y correo proveniente de fuentes indeseables. Una es a través del parámetro check_client_access, con el cual se define la localización del fichero que contendrá las tablas de de control de acceso. check_client_access = hash:/etc/postfix/access /etc/postfix/access contendrá una lista de direcciones IP, nombres de dominios, nombres de equipos y direcciones de correo electrónico. Puede definirse si se accepta o de rechaza explícitamente el correo proveniente de los elementos de dicha lista. A continuación se muestran distintos ejemplos: El valor "OK" específica aceptar explícitamente correo.
[email protected] OK
[email protected] OK El valor "REJECT" rechaza todo el correo proveniente y dirigido hacia las direcciones especificadas: #Rechaza correo de las siguientes direcciones y dominios
[email protected] REJECT dominiohostil.net REJECT enviosmasivos.com REJECT masivo.com REJECT 209.61.129.8 REJECT #rechaza el correo proveniente de todo el segmento 172.16.18
172.16.18 REJECT Cualquier código "5xx" significa error fatal e indica al cliente de correo electrónico no intentar de nuevo. A diferencia de REJECT, que rechaza la entrega del mensaje, un código 550, por ejemplo, rebota el mensaje incluyendo una parte del contenido original.
[email protected] 550 No me interesan sus productos
[email protected] 554 Ponte a hacer algo util Cualquier código "4xx" significa que el cliente de correo electrónico debe reintentar más tarde.
[email protected] 450 Estamos realizando mantenimiento
smtpd_client_restrictions y listas negra de servicio de nombres de dominio (DNSBL) Anteriormente se había establecido la variable smtpd_client_restrictions con los valores permit_sasl_authenticated, permit_mynetworks y check_relay_domains, los cuales son necesarios para un nivel de seguridad aceptable si se utiliza autenticación para el servicio de SMTP. Pueden añadirse más restricciones, como por ejemplo reject_maps_rbl, que espcifica la consulta de listas negras ofrecidas por distintos servicios como mail-abuse.org, spamhaus.org o spamcop.com. Se requiere entonces añadir reject_maps_rbl a la variable smtpd_client_restrictions: smtpd_client_restrictions = permit_sasl_authenticated, permit_mynetworks, check_relay_domains, reject_unknown_client, reject_maps_rbl A continuación se añaden las definiciones para las listas negras que se desee utilizar o las que se hayan contratado: maps_rbl_domains = sbl.spamhaus.org, opm.blitzed.org, list.dsbl.org, relays.mail-abuse.org, cbl.abuseat.org Agregar muchas listas ciertamente garantiza un mínimo de Spam, pero significa también que el correo tardará mucho más tiempo en validarse y entregarse en los buzones de correo. Pude llegar a demorar hasta varios minutos después de el envío desde el cliente de correo electrónico. Recomendamos elegir dos o tres listas negras a lo sumo. smtpd_helo_required y stmpd_helo_restrictions Por lo general los programas utilizados para enviar spam nunca envían mandato helo al conectarse al servidor, o bien lo hacen desde servidores sin un registro MX o A en un DNS. Por tal motivo es buena idea habilitar las restricciones que negarán el acceso a cualquier cliente de correo que no envíe mandato helo smtpd_helo_required = yes stmpd_helo_restrictions = reject_unknown_hostname Nota: Es importante no caer en el error común de confundir stmpd_helo_restrictions = reject_unknown_hostname con smtpd_client_restrictions = reject_unknown_client.
Postfix + dominios virtuales Es muy habitual que un servidor SMTP aloje y dé servicios a mas de un dominio. Este documento trata de aclarar un poco la configuracion de Postfix para que pueda implementar esta funcionalidad. Por su puesto, la lectura de este documento debe complemetarse con la consulta de la documentación oficial del desarrollador de Postfix. La mayor parte de lo que aquí se expone proviene de la documentación html que incluye el paquete postfix y del directorio de ejemplos de configuración que suele encontrarse en el directorio /etc/postfix tras la instalación. Los usuarios de Sendmail que estén acostumbrados a manejar dominios virtuales a través de virtusertable no deben tener dificultad alguna para migrar esa funcionalidad a Postfix. En general, hay dos formas de manejar los dominios virtuales en postfix: con el Estilo Postfix y con el Estilo Sendmail
Estilo Postfix Los alias, usuarios locales y listas de correos no son visibles en un dominio virtual (mas abajo explico qué es eso). Para especificar ese estilo, tenemos que incluir en '/etc/postfix/virtual' líneas como las siguientes: mi_dominio.virtual Y aqui ponemos cualquier cosa, no importa. usuario1@mi_dominio.virtual direccion1 usuario2@mi_dominio.virtual direccion2, direccion3, ... usuario3 direccion4, direccion5, ... @mi_dominio.virtual direccion6, .... En general, la forma de las líneas es patrón
resultado
cuando uno de los patrones es reconocido en una dirección de correo, entonces ésta última es sustituida por el resultado. En el ejemplo, la primera linea es obligatoria para especificar el estilo postfix, las otras líneas ilustran las distintas posibilidades. Nótese que podemos redirigir a una o más direcciones. La segunda línea redirigira todo correo cuyo destinatario es usuario1@mi_dominio.virtual a direccion1. La tercera línea muestra el hecho de que se puede redirigir a más de una dirección. En la cuarta línea,
[email protected] es redirigida a direccion4, direccion5 ... cuando 'algun.dominio' figura en alguno de los parametros de configuracion $myorigin, $mydestination o $inet_interfaces. El la quinta linea, redirigirá todo el correo de cualquier usuario de mi_dominio.virtual a direccion6 ... En cuanto a las direcciones de reenvio, las que tienen forma '@otro_dominio ' son expandidas al mismo usuario de 'otro_dominio', pero esa expansión solo funciona en la primera direccion de la lista (puede haber más, como se muestra en los ejemplos anteriores). Como se ha dicho en un principio, el servidor postfix aceptará correo de cualquier usuario conocido en mi_dominio.virtual y rechazará como imposible cualquier usuario no conocido en ese dominio. Aquí radica la diferencia en el estilo sendmail. Los usuarios locales NO son reconocidos a no ser que se adapten a algunas de las condiciones del fichero virtual dentro de ese dominio. Los alias definidos en /etc/aliases TAMPOCO son reconocidos en este estilo. Hay que utilizar el estilo sendmail para poder utilizar implicitamente alias y usuarios locales.
Estilo Sendmail Para fijar ese estilo tenemos que añadir en /etc/postfix/main.cf el nombre del dominio virtual al parámetro de configuración $mydestination: mydestination= $myhostname localhost.$mydomain $mydomain mi_dominio.virtual En el fichero /etc/postfix/virtual ahora NO debemos incluir la primera línea del ejemplo del estilo postfix. Es decir, ahora quedaría: usuario1@mi_dominio.virtual direccion1 usuario2@mi_dominio.virtual direccion2, direccion3, ... usuario3 direccion4, direccion5, ... @mi_dominio.virtual direccion6, .... con el mismo significado y posibilidades. Ahora bien, la diferencia respecto al estilo postfix es que ahora son utilizables los alias, usuarios locales y listas de correos. Ejemplo, supongamos que tenemos definido el usuario local usuariolocal y que en el fichero aliases tenemos también el alias, mi_alias:
usuariolocal
Ahora postfix SI que redirigirá el correo a destinatarios como mi_alias@mi_dominio.virtual o usuariolocal@mi_dominio.virtual a usuariolocal@mi_dominio.local aunque no aparezcan explícitamente en el fichero. Evidentemente, si tampoco el usuario es reconocido como alias o usuario local, es mensaje es devuelto. Por si todas estas posibilidades no fueran pocas, en amboos estilos se pueden incluir también expresiones regulares. Para generar el fichero /etc/postfix/virtual.db o /etc/postfix/virtual.dbm , una vez editado /etc/postfix/virtualhay que ejecutar postmap #) postmap hash: /etc/postfix/virtual También hay que incluir en '/ect/postfix/main.cf' la linea virtual_maps = hash:/etc/postfix/virtual Con lo que postfix lo utilizara al cabo de alrededor de un minuto, o inmediatamente tras #) service postfix restart En este ejemplo se ha utilizado el fichero /etc/postfix/virtual, pero podríamos haber editado otro, en cuyo caso deberíamos incluirlo en $virtual_maps
Cómo se incluye más de un dominio virtual Pues depende del estilo de modelo virtual que se adopte. Si se utiliza el estilo sendmail entonces se debe incluir los dominios en main.cf cuando se defina el parametro $mydestination mydestination= $myhostname localhost.$mydomain $mydomain mi_dominio.virtual1 mi_dominio.virtual2 ... En caso de utilizar estilo postfix entonces se deber incluir en el fichero definido en $virtual_maps una seccion por cada dominio virtual. mi_dominio.virtual1 cualquier cosa ..... mi_dominio.virtual2 cualquier cosa .....
Lo habitual es que desemos, asimismo, distribuir el correo que venga de los dominios virtuales al resto de la red (hacer relay). Como le valor por defecto de $relay_domains es $mydestination, si ya hemos incluido todos los dominios en los que queremos hacer relay en $mydestination, no hace falta incluirlos en $relay_domains. En caso contrario, por ejemplo si se utiliza el estilo postfix, habria que incluirlos: relay_domains = $mydestination mi_dominio.virtual1 mi_dominio.virtual2
Installing Horde Groupware Webmail Edition on CentOS 5 Horde Groupware Webmail Edition is a free, enterprise ready, browser based communication suite. Users can read, send and organize email messages and manage and share calendars, contacts, tasks and notes with the standards compliant components from the Horde Project. Horde Groupware Webmail Edition bundles the separately available applications IMP, Ingo, Kronolith, Turba, Nag and Mnemo. Versions • • • • • •
CentOS 5.0 i386 (OS) Horde Groupware Webmail Edition 1.0.3 (October 2 2007) Apache 2.2.3 (http server) MySQL 5.0.22 (db server) Postfix 2.3.3 (mail server) Dovecot 1.0 (IMAP server)
Set up your host name and address This is only necessary if you didn't do it at installation. Use system-config-network-tui to set up IP, Netmask and Gateway: system-config-network-tui Edit /etc/sysconfig/network and set your hostname: NETWORKING=yes NETWORKING_IPV6=yes HOSTNAME=yourhostname.yourdomain.com Edit /etc/resolv.conf and add your DNS servers: nameserver 208.67.222.222 nameserver 208.67.220.220 Edit /etc/hosts to something like this, according to your system settings: # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost 192.168.0.100 yourhostname.yourdomain.com yourhostname ::1 localhost6.localdomain6 localhost6 Restart network: service network restart If your using GUI interface (like gnome), you may need to restart it: init 6
Installing prerequisites yum install -y gettext httpd mysql mysql-server dovecot postfix system-switch-mail perl
yum install -y php php-mysql php-xml php-imap php-mbstring php-mcrypt php-pecl-Fileinfo php-peclmemcache \ php-pear-DB php-pear-File php-pear-Log php-pear-Mail-Mime php-pear-Auth-SASL php-pearDate \ php-pear-HTTP-Request php-pear-Mail php-pear-Net-Sieve php-pear-Net-Socket php-pear-NetSMTP yum install -y php-pear-Date-Holidays
<-- (for now, this package is available in the EPEL repo)
yum install -y openssl mod_ssl crypto-utils perl-Net-SSLeay yum install -y php-devel gcc pecl/modulename')
<--(for https secure browsing)
<--(if you want to install extra pecl modules - PS: use 'pear install
Configuring Postfix and Dovecot Turn off sendmail: service sendmail stop chkconfig sendmail off system-switch-mail (select postfix) Configure Postfix: postconf -e 'home_mailbox = Maildir/' Edit /etc/dovecot.conf and add the following to the end of the file: # to allow the creation of mail subfolders mail_location = maildir:~/Maildir # Enable IMAP protocol protocols = imap If using CentOS x86_64, temporary fix for this bug login_process_size = 64 To configure the rest of postfix, such as domain name and secure connections, take a look at this nice tutorial: http://fedorasolved.org/server-solutions/postfix-mail-server
Start services service httpd restart chkconfig httpd on service postfix restart chkconfig postfix on service dovecot restart chkconfig dovecot on service mysqld restart chkconfig mysqld on Configure mysqld root password: /usr/bin/mysqladmin -u root password 'new-password' /usr/bin/mysqladmin -u root -h yourhostname.yourdomain.com password 'new-password'
Download Horde Groupware Webmail Edition and extract it Get the latest stable version of Horde Groupware Webmail Edition from http://www.horde.org/download/app/?app=webmail. Extract files and rename folder: tar zxf horde-webmail-*.tar.gz -C /var/www/html/ mv /var/www/html/horde-*/ /var/www/html/horde/
Creating database and tables in MySQL Run the setup.php script: cd /var/www/html/horde/scripts/ ./setup.php If asked, choose /horde. Press 1; choose mysql; Persistent connection: 0; Username horde; Choose a password for mysql-userhorde; Unix sockets; Location null; DB name horde; Press 2; yes; root; root-mysql-password. Press 3; specify an existing IMAP user to have horde administration permissions (i.e. your current linux user).
Create user horde in MySQL and grant horde DB the proper permissions Edit a text file and change the password for the same as in Step 1 above: USE mysql; REPLACE INTO user (host, user, password) VALUES ( 'localhost', 'horde', -- IMPORTANT: Change this password! PASSWORD('password_for_mysql_horde_user') ); REPLACE INTO db (host, db, user, select_priv, insert_priv, update_priv, delete_priv, create_priv, drop_priv, index_priv) VALUES ( 'localhost', 'horde', 'horde', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y' ); -- Make sure that priviliges are reloaded. FLUSH PRIVILEGES; Save the file as createuser.mysql (or something else) and load it as mysql stdin: mysql --user=root --password=mysqlrootpassword < createuser.mysql
Configure Apache and PHP Add a "horde.conf" file to /etc/httpd/conf.d: # # Horde
# Alias /horde /var/www/html/horde
# Uncomment the following 3 lines to make Horde locally accessible only #Order Deny,Allow #Deny from all #Allow from 127.0.0.1 Options +FollowSymLinks # horde.org's recommended PHP settings: php_admin_flag safe_mode off php_admin_flag magic_quotes_runtime off php_flag session.use_trans_sid off php_flag session.auto_start off php_admin_flag file_uploads on # Optional - required for weather block in Horde to function php_admin_flag allow_url_fopen on # If horde dies while trying to handle large email file attachments, # you are probably hitting PHP's memory limit. Raise that limit here, # but use caution # Set to your preference - memory_limit should be at least 32M # and be greater than the value set for post_max_size #php_value memory_limit 32M #php_value post_max_size 20M #php_value upload_max_filesize 10M # /usr/share/pear is needed for PEAR. /var/www/html/horde is needed for Horde itself # TODO: Set an appropriate include_path, too. Might even increase speed a bit. php_admin_value open_basedir "/var/www/html/horde:/var/www/html/horde/config:/usr/share/pear:/tmp" php_admin_flag register_globals off Order Deny,Allow Deny from all # Deny access to files that are not served directly by the webserver
Order Deny,Allow Deny from all # Deny access to the test.php files except from localhost
Order Deny,Allow Deny from all Allow from 127.0.0.1 Change horde.conf permission: chmod 0644 -v /etc/httpd/conf.d/horde.conf Increase memory_limit option in /etc/php.ini to 32MB: memory_limit = 32M Restart httpd:
service httpd restart
Check if everything is alright Open the following address in your browser: http://localhost.localdomain/horde/test.php
Security configuration Secure config files: chown apache:root -R /var/www/html/horde/config chown apache:root -R /var/www/html/horde/*/config chmod -R go-rwx /var/www/html/horde/config chmod -R go-rwx /var/www/html/horde/*/config Secure scripts: chown -R root:root /var/www/html/horde/scripts chown -R root:root /var/www/html/horde/*/scripts chmod -R go-rwx /var/www/html/horde/scripts chmod -R go-rwx /var/www/html/horde/*/scripts Secure test.php: chmod a-rwx /var/www/html/horde/test.php chmod a-rwx /var/www/html/horde/*/test.php
Finishing configuration Open the following url in your browser and log into horde with the administrator user (defined above in Option 2 when creating databases): http://localhost.localdomain/horde (PS: use full URL address, with host and domain name) (PS2: Remember to check $conf['cookie']['path'] = '/horde'; in horde/config/conf.php to match the path you use to access horde on your server) Fell free to change other options, as you like. The good thing about Horde Groupware Webmail Edition is it comes pretty much configured and ready for use! Remember to restart httpd after you make changes: service httpd restart
Configurando SpamAssassin, y Clamav con Mailbox y Procmail Para configurar clamav y spamassin con Mailbox haremos uso de procmail Primero instalaremos los paquetes de clamav de rpmforge y el spamassassin $> yum --enablerepo=rpmforge install clamav clamd spamassasin unzip bzip2 unrar actualizamos el antivirus $> freshclam Luego editamos el archivo de configuración de postfix para que haga uso de procmail para procesar los correos $> vim /etc/postfix/main.cf mailbox_command = /usr/bin/procmail Creamos el script de procmail que procese los correos e invoque al antivirus y antispam $> vim /etc/procmail SHELL=/bin/sh AV_REPORT=`clamdscan --stdout --disable-summary - | cut -d: -f 2` VIRUS=`if [ "$AV_REPORT" != " OK" ]; then echo Yes; else echo No;fi` :0fw | formail -i "X-Virus: $VIRUS" :0fw * ^X-Virus: Yes | formail -i "Virus: $AV_REPORT" -i "Subject: MENSAJE CON VIRUS: $AV_REPORT" :0fw | spamc -f -s 100000 -u $LOGNAME :0: ${DEFAULT} Editamos el archivo de configuración de Spamassassin $>vim /etc/mail/spamassassin/local.cf required_hits 3 report_safe 0 rewrite_subject 1 rewrite_header Subject [SPAM] score UPPERCASE_75_100 0 reiniciamos postfix e iniciamos clamd y spamassassin $> service postfix restart $> service clamd start $> service spamassassin start Habilitamos el arranque automático de clamd y spamassassin $> chkconfig clamd on $> chkconfig spamassassin on