====== Instalando un sistema de correo electrónico con Ubuntu Hardy, Postfix, Cyrus y Amavisd-new ====== //Adaptado por Félix Molinuevo, [[fmsi>|FMSI Sistemas de Informática]]// ===== Introducción ===== Necesitaba un sistema de correo electrónico completo para mi empresa. Quería conexiones encriptadas y autenticación tanto para enviar como para recibir, así como utilizar IMAP en vez de POP3. La configuración final me permite manejar grandes cantidad de correo-e de envío y recepción, es fácil de usar y muy flexible. De ninguna manera se ofrecen aquí explicaciones específicas sobre el funcionamiento de un sistema de correo-e, ni de los sistemas mencionados, de manera que es necesario que la persona que inicie este procedimiento tenga conocimientos sobre los mismos, o lea primero su documentación, para aprender así por qué se necesita cada parte aquí explicada. ===== Generalidades ===== ==== Cuentas ==== Para manejar las cuentas existen varias posibilidades. Cada cuenta válida puede estar relacionada a un usuario válido en el sistema, o se puede configurar un backend como una base de datos SQL o LDAP para manejar la autenticación, sin quedar limitado a crear usuarios en el sistema para cada cuenta. Debido a mis necesidades, y un potencial bajo número de clientes, decidí utilizar autenticación contra cuentas SASL, lo que me evita crear una cuenta en el sistema por cada cuenta de correo-e necesaria, a la vez que mantengo el soporte para dominios virtuales. De esta manera puedo brindar soporte a cualquier dominio con un registro MX apuntando al servidor de correo-e, no sólo mi propio dominio, pero el correo será distribuido a las cuentas autenticadas contra SASL. ==== Software ==== Debido a que uso mayoritariamente Debian y sus derivados, este instructivo está orientado a ellos, especialmente a Ubuntu Hardy. Pero puede ser empleado para cualquier distribución de Linux con unas pocas adaptaciones. El software usado es: * [[http://www.postfix.org/|Postfix]] (MTA) * [[http://www.spamassassin.org|Spamassassin]] (Filtro de spam) * [[http://asg.web.cmu.edu/sasl/|Cyrus-SASL]] (Autenticación) * [[http://asg.web.cmu.edu/cyrus/imapd/|Cyrus-IMAP]] (Servidor IMAP y SIEVE) * [[http://httpd.apache.org|Apache]] (Para webmail) * [[http://www.squirrelmail.org|SquirrelMail]] (Sistema de webmail) * Plugins para SquirrelMail: [[http://email.uoa.gr/projects/squirrelmail/avelsieve.php|AvelSIEVE]] (Creador de scripts SIEVE para Squirrelmail) ===== Instalación ===== ==== Antes de empezar ==== Antes de empezar a instalar el software, asegurarse que el sistema esté actualizado: aptitude update aptitude upgrade -V En este punto, todo debería estar listo para empezar. El MTA por defaul en Debian, Exim, será desinstalado por Apt automáticamenet cuando Postfix sea instalado. El resto es probablemente todo software nuevo. ==== Postfix ==== aptitude install postfix Esto instalará un sistema Postfix listo para utilizar conexiones encriptadas TLS (SSL). Elegí algunos valores por defecto razonables a las preguntas del instalador de Debian. Cualquier cosa que necesite ser cambiada, podrá serlo más tarde sin demasiados inconvenientes. En este punto, la entrega de correo-e local debería funcionar, pero el sistema aún no está completo. ==== Cyrus SASL and IMAP ==== A continuación, se instalarán todos los paquetes necesarios del proyecto Cyrus, como las librerías SASL, el administrador de Cyrus y los programas clientes, así como el demonio Cyrus IMAP. Aunque está disponible, no se va a instalar el demonio POP3 correspondiente. Es una configuración exclusivamente IMAP. aptitude install libsasl2 libsasl2-modules sasl2-bin aptitude install cyrus-admin-2.2 cyrus-clients-2.2 cyrus-common-2.2 cyrus-imapd-2.2 ===== Configuración ===== Se empezará con la configuración de la autenticación Cyrus-SASL. Tanto el servidor SMTP, Postfix, como el servidor IMAP, Cyrus-IMAP, autenticarán usando otro demonio, saslauthd. Saslauthd manejará la autenticación de los usuarios. Con esto en mente, primero se debe comenzar configurando SASL. ==== SASL ==== Editar /etc/default/saslauthd para habilitar el demonio y configurar el mecanismo de autenticación. START=yes MECHANISMS="sasldb" Si se desea otro mecanismo de autenticación, aquí es donde debe ser configurado. Aquí el sistema autentica contra cuentas SASL, por lo que sasldb es el método relevante. === Probando SASL === Iniciar el servidor y probarlo. /etc/init.d/saslauthd start Ahora se debe crear alguna cuenta en SASL: saslpasswd2 -c usuario Y entonces, testearlo: testsaslauthd -u usuario -p contraseña Si funciona, se verá 0: OK "Success." Como resultado. Si es así, saslauthd funciona bien. A continuación, se debe detenerlo /etc/init.d/saslauthd stop === Finalizando la configuración de SASL === Para que Postfix pueda comunicarse con SASL y Cyrus (revise la configuración más adelante), se debe montar /var/run/saslauthd y /var/run/cyrus dentro de la jaula chroot de Postfix. Esto puede ser hecho usando un montaje bind. Para implementar esto, agregar las siguientes líneas en fstab. /var/run/saslauthd /var/spool/postfix/var/run/saslauthd none rw,bind 0 0 /var/run/cyrus /var/spool/postfix/var/run/cyrus none rw,bind 0 0 Asimismo, crear los puntos de montaje. mkdir -p /var/spool/postfix/var/run/saslauthd mkdir -p /var/spool/postfix/var/run/cyrus Y entonces, montarlos. mount /var/spool/postfix/var/run/saslauthd mount /var/spool/postfix/var/run/cyrus La misma ubicacion es ahora accesible desde fuera de la jaula chroot en /var/run/saslauthd y desde dentro de ella en /var/spool/postfix/var/run/saslauthd (lo que Postfix ve como /var/run/saslauthd). Esto evita tener que editar el script de inicio de saslauthd, tratar con dpkg, y crear links simbólicos. El único efecto visible será unas líneas adicionales si se ejecuta el comando "df", ya que éste no sabe que un montaje bind no es un disco por separado. Como advertencia, no se deben cambiar otras cosas relacionadas con la autenticación SASL, tal como se describe en README.Debian en el paquete de Postfix, porque aquí se está usando otro método para hacer que Postfix se comunique con SASL. ==== Postfix ==== Hay varios pasos necesarios para lograr que Postfix quede listo y funcionando. Es necesario configurarlo para conectarse a saslauthd, así como unir Cyrus-IMAP y SquirrelMail. Esta sección explicará sobre las primeras instancias de configuración de Postfix, y las siguiente cubrirán los otros aspectos. Editar el archivo /etc/postfix/main.cf y agregar las siguientes líneas al final del mismo. # SASL Auth Settings smtpd_sasl_local_domain = smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination Asegurarse de tener el nombre correcto del servidor: myhostname = host.domain.com Este nombre de host debe ser un host que resuelva en una IP pública válida, y preferentemente que la resolución inversa de ésta sea el mismo nombre de host. Esto evitará rebotes de los mensajes, si los servidores SMTP de destino están configurados más estrictamente. Luego configurar el destino final, el relay host y aceptar mensajes desde la red interna, si así se necesita: mydestination = host, host.domain.com, localhost.localdomain, localhost.localdomain, localhost, whatever.com relayhost = aaa.bbb.ccc.ddd mynetworks = 127.0.0.0/8 192.168.1.0/24 === Autenticación contra relayhost === Si se necesita autenticación SASL en el relayhost/smarthost, agregar las siguientes líneas: # Authentication on smarthost smtp_sasl_auth_enable = yes smtp_sasl_security_options = smtp_sasl_password_maps = hash:/etc/postfix/client_passwords smtp_sasl_loglevel = 2 Si se necesita esto, se debe agregar en /etc/postfix/client_passwords el par usuario/contraseña correspondiente al relayhost: relayhost.domain.com username:password y luego ejecutar postmap para compilar esa información: postmap /etc/postfix/client_passwords === Finalizando y probando === También se debe editar /etc/postfix/sasl/smtpd.conf y poner lo siguiente: pwcheck_method: saslauthd mech_list: PLAIN LOGIN Además, se debe agregar al usuario "postfix" al grupo "sasl": adduser postfix sasl Reiniciar Postfix y revisar si la autenticación está habilitada: /etc/init.d/postfix reload telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 dev.ev-15.com ESMTP Postfix (Debian/GNU) Escribir allí "EHLO domain.com". Si el servidor responde con algo como lo siguiente, la autenticación está habilitada en el servidor. Escribir "quit" para salir. 250-mail.domain.com 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN PLAIN 250 8BITMIME Postfix debería estar ahora configurado para autenticar usando saslauthd. Notar que los métodos de anuncio de autenticación son solamente PLAIN y LOGIN, los que son basados en texto. Para habilitar alguno de los métodos de compartición de claves, como CRAM-MD5 o DIGEST-MD5, un método de autenticación diferente debería ser usado. Para evitar entregar estas contraseñas planas a través de Internet, se encapsulará la comunicación dentro de una capa de encriptación usando SSL/TLS. ==== SSL/TLS ==== **//Nota//: esta sección no se necesita más, porque Postfix ahora incluye soporte TLS, pero se deja aquí porque se pueden tomar algunas ideas si algo relacionado con SSL falla ;).** Certificates are required to use TLS and SSL. There are generally two classes of certificates: self-signed certificates and certificates signed by one of the major certificate authorities. If you need implicitly trusted certificates that you can use and let your customers be comfortable with, you'll probably want to go to a CA and purchase them. With smaller sites and users who understand certficate warnings, self-signed certificates are easy to create and still allow encryption. They will throw up warnings in mail clients and web browsers, but the certificates can usually be permanently accepted by users. If the primary goal is encryption and the trust issues are not major, then a self-signed certificate is adequate. === Certificate Creation === The following steps will create a new CA, certificate request, and certificate. Start with making a new CA. cd /usr/lib/ssl/misc ./CA.pl -newca Answer the questions as they come with reasonable information. The value for CN (Common Name) should be the hostname of the server that the certificates will be used on. Now make the server certificate request. ./CA.pl -newreq-nodes Now sign it ./CA.pl -sign Copy the files to /etc/ssl/certs cp -iva newcert.pem /etc/ssl/certs/ cp -iva newreq.pem /etc/ssl/certs/ cp -iva newkey.pem /etc/ssl/certs/ cp -iva demoCA/cacert.pem /etc/ssl/certs/ === Add SSL to Postfix === Edit /etc/postfix/main.cf again and add the following lines to the file. # TLS Information smtpd_use_tls = yes #smtpd_tls_auth_only = yes smtpd_tls_key_file = /etc/ssl/certs/newkey.pem smtpd_tls_cert_file = /etc/ssl/certs/newcert.pem smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem smtpd_tls_loglevel = 3 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom Edit /etc/postfix/master.cf and uncomment the following lines. tlsmgr fifo - - n 300 1 tlsmgr smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes 587 inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes This will enable TLS, the smtps port, and the dedicated port 587 for mail submission. The line ''#smtpd_tls_auth_only = yes'' will be uncommented later so that users are required to encrypt their connections. For now though leave it alone until testing is complete. To test, telnet in again, as above, and see if the line ''250-STARTTLS'' is there. If so then TLS should be available. ==== Cyrus IMAP ==== Esta guía usa Cyrus-IMAP, en gran parte por su alta performance, y por el filtro basado en el servidor SIEVE. Una cosa a notar sobre este paquete es que toma un planteo de "caja negra" a la entrega de correo-e IMAP. El correo no es entregado a una carpeta del home del usuario, sino a una serie de carpetas Cyrus dedicadas. Si se desea en cambio que el correo-e sea entregado a maildirs o archivos mbox, entonces los servidores Courier- o UW-IMAP deberían ser mejores elecciones. Más tarde, SquirrelMail y un plugin para editar fácilmente scripts SIEVE serán instalados. Editar el archivo /etc/cyrus.conf y elegir qué servicios ejecutar. A menos que se desee acceso POP, dejar solamente IMAP, IMAP seguro, y SIEVE. Para seguridad extra, desactivar IMAP para forzar a los usuarios a conectarse utilizando SSL. Dentro de la sección SERVICES, descomentar la línea imaps cmd="imapd -s -U 30" listen="imaps" prefork=0 maxchild=100 y comentar las líneas pop3. Descomentar la siguiente línea, para que Squatter pueda indexar diariamente todas las cuentas: # reindex all mailboxes (fulltext) daily squatter_a cmd="/usr/sbin/squatter" at=0517 Esta configuración usa LMTP. El socket por default en el archivo debería estar bien. lmtpunix cmd="lmtpd" listen="/var/run/cyrus/socket/lmtp" prefork=0 maxchild=20 La línea para sieve debería estar ya descomentada, pero se debe chequearlo para estar seguro. sieve cmd="timsieved" listen="localhost:sieve" prefork=0 maxchild=100 El resto en el archivo debe dejarse tal como está. Ahora abrir /etc/imapd.conf. La mayor parte de la configuración debe dejarse como está, pero se deben cambiar algunas pocas cosas. Como siempre, se debe leer los comentarios sobre las diferentes configuraciones en el archivo. La directiva "sieveusehomedir" debe ser puesta a "false" para que la administración remota de Sieve con SquirrelMail funcione. Para que esta configuración funcione, los siguientes valores deben estar indicados: admins: cyrus allowplaintext: yes sasl_mech_list: DIGEST-MD5 CRAM-MD5 PLAIN LOGIN sasl_pwcheck_method: saslauthd //Notas sobre sasl_mech_list//: DIGEST-MD5 es el mejor mecanismo. CRAM-MD5 es mejor que PLAIN y LOGIN. Los dos últimos son necesarios sólo por las dudas. === IMAP y SSL === Configurar los siguientes valores en imapd.conf, dejando el resto como está. tls_cert_file: /etc/ssl/certs/newcert.pem tls_key_file: /etc/ssl/certs/newkey.pem tls_ca_file: /etc/ssl/certs/cacert.pem tls_ca_path: /etc/ssl/certs === Terminando la configuración de Cyrus === Cambiar la propiedad de los archivos dentro de /var/lib/cyrus y /var/spool/cyrus: chown -R cyrus: /var/lib/cyrus/* chown -R cyrus: /var/spool/cyrus/* Reiniciar cyrus. /etc/init.d/cyrus2.2 restart Luego, iniciar saslauthd otra vez. /etc/init.d/saslauthd start Se debe crear al usuario cyrus en SASL, también: saslpasswd2 -c cyrus Tal como las cosas han sido configuradas, sólo el usuario cyrus puede administrar el servidor cyrus. Se debe configurar una contraseña para el usuario cyrus y entonces ejecutar un su al usuario cyrus. passwd cyrus su - cyrus Ahora se debe agregar al usuario IMAP, es decir crear la cuenta para el usuario en el servidor CyrusIMAP. Los nombres de usuario deben ser prefijados con "user.", seguido por el login name para el usuario. Para una cuenta de usuario martin, la mailbox debe ser llamada "user.martin". Ingresar en la herramienta de administración de cyrus y crear un nuevo usuario de correo-e igualando un nombre de entrega local que Postfix conozca. Hacer esto para cada cuenta local que reciba correo. $ cyradm localhost cyradm> cm user.usuario ... repeat for all users ... cyradm> quit Se puede ingresar dentro de cyradm como el usuario cyrus directamente también, sin usar una cuenta de systema de cyrus: cyradm -u cyrus localhost Adicionalmente, se debe agregar un alias de mail para esta cuenta de mail, debido a que se están usando cuentas creadas en SASL, pero no en el sistema, y Postfix necesita saber dónde entregarlas. Editar /etc/aliases y agregar para cada cuenta algo como: usuario: usuario Es decir, crear un alias para la propia cuenta. Y luego ejecutar el comando "newaliases" para compilar esos alias nuevos. ==== Cyrus y Postfix ==== Editar el archivo /etc/postfix/main.cf y agregar la siguiente línea al archivo, removiendo o comentando cualquier otra línea "mailbox_transport =". mailbox_transport = lmtp:unix:/var/run/cyrus/socket/lmtp Este transporte sólo si se ha montado /var/run/cyrus dentro de la jaula chroot de Postfix, tal como fue explicado anteriormente. Crear el grupo "lmtp" y agregar al usuario "postfix" a este grupo. addgroup lmtp adduser postfix lmtp Fijar los permisos del directorio de sockets y reiniciar ambos servidores. dpkg-statoverride --force --update --add cyrus lmtp 750 /var/run/cyrus/socket /etc/init.d/postfix restart /etc/init.d/cyrus2.2 restart Cyrus debería estar ahora unido a Postfix. Todo el correo de Postfix será manejado por Cyrus para ser entregado. Esto fallará si Postfix trata de entregar correo para un usuario que Cyrus no conozca. ==== Postfix y múltiples dominios ==== Si el servidor de mail maneja más de un dominio, pero entrega el correo a cuentas locales, el siguiente procedimiento configurará eso. Esto está basado en la guía encontrada en [[http://www.postfix.org/VIRTUAL_README.html]]. Crear el archivo /etc/postfix/virtual y completarlo con entradas como las siguientes user1@domain1.com realuser1 user2@domain1.com realuser2 user3@domain2.com realuser1 # enviar todo el mail para el domain3 al realuser3 @domain3.com realuser3 La columna izquierda mapea las direcciones de mail a la cual la gente enviará el correo, mientras que la de la derecha mapea las cuentas locales para las cuales ese correo será entregado (a través de Cyrus IMAP). Una vez que este archivo ha sido creado, se necesita compilarlo para que Postfix lo use; para ello es necesario ejecutar el comando postmap: postmap /etc/postfix/virtual Editar /etc/postfix/main.cf y agregar las siguientes líneas. # Virtual Domain Settings virtual_alias_domains = domain1.com, domain2.com, domain3.com virtual_alias_maps = hash:/etc/postfix/virtual Esto le dice a Postfix a cuáles dominios entregar, y qué archivo usar para chequear dónde entregar el correo. Finalmente reiniciar Postfix y todo debería estar funcionando. El sistema básico debería estar completo en este punto. ===== Resolución de problemas ===== La información más útil para la resolución de problemas se encuentra en el archivo /var/log/mail.log. Se debe abrir una console y usar el comando tail -f /var/log/mail.log para ver la actividad del servidor. Enviar algunos test de correo a alguna dirección en el servidor, y luego enviar mensajes a otras cuentas fuera del mismo. Si ocurre algún error, usar la información en el log de mail para tratar de encontrar la causa. Después que todo esté funcionando correctamente, es una buena idea descomentar la línea "smtpd_tls_auth_only = yes" y cambiar el valor de "smtpd_tls_loglevel" a algo más bajo, como 2. ==== Cyrus ==== Cuando se está testeando, algunas veces se necesita desactivar la funcionalidad de supresión de duplicados de Cyrus. Hacerlo agregando en /etc/imapd.conf lo siguiente: duplicatesuppression: no ===== Filtrado de spam y virus ===== ==== Spamassassin ==== aptitude install spamassassin spamc No se necesita más configuración. ==== ClamAV ==== aptitude install rar unrar lha arj unzoo zip unzip bzip2 gzip cpio file lzop nomarch cabextract ripole \ rpm pax p7zip zoo ncompress aptitude install clamav clamav-base clamav-daemon clamav-freshclam clamav-docs Libclamav y otros paquetes serán automáticamente instalados. Asegurarse que la directiva "AllowSupplementaryGroups" exista en el archivo /etc/clamav/clamd.conf. ==== Amavis ==== aptitude install amavisd-new Agregar el usuario "clamav" al grupo "amavis": adduser clamav amavis Reiniciar los demonios: /etc/init.d/clamav-daemon restart /etc/init.d/clamav-freshclam restart Si el hostname en /etc/hostname no es un FQDN (Fully Qualified Domain Name), es necesario modificar el archivo /etc/amavis/conf.d/50-user, agregando: $myhostname = "mail.domain.com"; para que Amavis tenga el valor correcto de la variable $myhostname. En el mismo archivo, agregar las siguientes dos líneas para que Amavis envíe los spam/virus en cuarentena a cuentas de correo-e: $virus_quarantine_to = "virus-police\@mail.domain.com"; $spam_quarantine_to = "spam-police\@mail.domain.com"; Activar el uso de ClamAV y el filtro de spam SpamAssassin en la configuración de Amavis, editando el archivo /etc/amavis/conf.d/15-content_filter_mode y descomentando las siguientes líneas: @bypass_virus_checks_maps = ( \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re); @bypass_spam_checks_maps = ( \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re); Si se desea que el spam sea bloqueado y enviado a una cuenta "spam-police", editar /etc/amavis/conf.d/20-debian_defaults: $final_spam_destiny = D_DISCARD; y comentar la siguiente linea si no se desea que Amavis modifique el subject de los mensajes marcados como spam: # $sa_spam_subject_tag = '***SPAM*** '; Si se desea que el spam llegue a las cuentas de los usuarios, editar /etc/amavis/conf.d/20-debian_defaults: $final_spam_destiny = D_PASS; agregar a /etc/amavis/conf.d/50-user cambiando los nombres en la siguiente línea según se necesite, y comentando la línea que habla sobre mail para spam: @local_domains_maps = ([ ".$mydomain", 'sub.example.net', '.example.com', 'localhost' ]); # $spam_quarantine_to = "spam-police\@mail.domain.com"; Finalmente, descomentar la siguiente línea si se quiere que Amavis modifique el subject de los mensajes marcados como spam: $sa_spam_subject_tag = '***SPAM*** '; De esta manera se deja que los mensajes marcados como spam pasen a las cuentas, mientras que se confía en que el usuario utilice los filtros SIEVE (o los filtros provistos por su cliente de correo-e) para filtrar el spam revisando los headers. Los virus son descartados. Aquí está la configuración recomendada para permitir y eliminar adosados. Se debe evaluar las necesidades del sistema y poner a punto lo necesario. Descomentar las siguientes líneas: qr'^application/x-msmetafile$'i, qr'^\.wmf$', qr'^message/partial$'i, qr'^message/external-body$'i, [ qr'^\.(Z|gz|bz2)$' => 0 ], [ qr'^\.(rpm|cpio|tar)$' => 0 ], [ qr'^\.(zip|rar|arc|arj|zoo)$'=> 0 ], qr'.\.(ade|adp|app|bas|bat|chm|cmd|com|cpl|crt|emf|exe|fxp|grp|hlp|hta| inf|ins|isp|js|jse|lnk|mda|mdb|mde|mdw|mdt|mdz|msc|msi|msp|mst| ops|pcd|pif|prg|reg|scr|sct|shb|shs|vb|vbe|vbs| wmf|wsc|wsf|wsh)$'ix, qr'.\.(mim|b64|bhx|hqx|xxe|uu|uue)$'i, qr'^\.(exe|lha|tnef|cab|dll)$', Las siguientes líneas se pueden configurar con los siguientes valores (filtro de spam muy estricto): $sa_tag_level_deflt = -1000; # add spam info headers if at, or above that level $sa_tag2_level_deflt = 1.0; # add 'spam detected' headers at that level $sa_kill_level_deflt = $sa_tag2_level_deflt; # triggers spam evasive actions $sa_dsn_cutoff_level = 10; # spam level beyond which a DSN is not sent ==== Modificar la configuración de Postfix ==== Agregar esto a /etc/postfix/master.cf: smtp-amavis unix - - y - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20 127.0.0.1:10025 inet n - y - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions=reject_unauth_pipelining -o smtpd_end_of_data_restrictions= -o mynetworks=127.0.0.0/8 -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks Y agregar esto a /etc/postfix/main.cf: content_filter=smtp-amavis:[127.0.0.1]:10024 Reiniciar Postfix: /etc/init.d/postfix restart ===== Software adicional ===== Adicionalmente al servicio de correo-e básico, es posible proveer servicio de webmail usando SquirrelMail, el filtro de spam SpamAssassin y filtro de correo-e de servidor con SIEVE. ==== Webmail ==== Para usar el webmail, primero se debe configurar Apache si no está ya hecho. Para instalar Apache y servicios necesarios: aptitude install apache2 libapache2-mod-php5 php5-imap Desde que los usuarios ingresarán en SquirrelMail usando un formulario web, es una buena idea activar SSL en el servidor. Apache usa un certificado en una forma algo diferente a la que ha sido usada en esta guía. Combina el certificado del sitio con la clave privada del pedido del certificado. Para crear este archivo, copiar la clave privada de newreq.pem y el certificado firmado de newcert.pem en un nuevo archivo /etc/apache2/ssl/apache.pem. Activar el módulo SSL. a2enmod ssl Copiar el archivo de configuración por defecto en /etc/apache2/sites-available/default a un nuevo archivo en /etc/apache2/sites-available, como "default-ssl". Editar este archivo. Cambiar la línea "" a "", la línea "" a "" y agregar las siguientes líneas al archivo, dentro de la directiva VirtualHost: SSLEngine on SSLCertificateFile /etc/apache2/ssl/apache.pem Editar el archivo por defecto del sitio y cambiar la línea "" a "", y la línea "" a "". Ahora abrir el archivo /etc/apache2/ports.conf y agregar la siguiente línea al mismo. Listen 443 Activar el nuevo sitio con SSL.. a2ensite default-ssl Reiniciar Apache. /etc/init.d/apache2 force-reload Ahora que Apache está ejecutándose, instalar el paquete SquirrelMail. aptitude install squirrelmail Ejecutar la configuración de SquirrelMail y ajustar los parámetros necesarios. squirrelmail-configure La configuración es sencilla. Una vez que está hecho, probar de ingresar en el nuevo sitio de SquirrelMail (la línea "Include /etc/squirrelmail/apache.conf" quizá sea necesario que sea agregada a /etc/apache2/apache2.conf). Si es posible ingresar al sitio, entonces el webmail está listo y funcionando. ==== Filtros SIEVE ==== SIEVE es una simple pero poderosa forma de filtrar correo-e en el servidor. En esta configuración es parte del paquete del servidor Cyrus IMAP y se ejecuta en el puerto 2000. La forma más fácil de crear scripts SIEVE es usando el plugin AvelSIEVE para SquirrelMail. Primero se debe bajar el plugin del sitio de SquirrelMail y descomprimirlo en la carpeta de plugins de SquirrelMail. Copiar entonces la configuración de ejemplo al archivo real y editarlo. Quizá no haya que cambiar demasiado. Ejecutar el script de configuración de SquirrelMail y seleccionar "plugins" para ver la lista de los disponibles. Tipear el número del plugin avelsieve para habilitarlo. Guardar las preferencias y salir, volviendo a la página de SquirrelMail para testearlo. Pulsar sobre el enlace de nuevos filtros en la barra superior. Si se recibe un error al conectarse, revisar /etc/cyrus.conf. Si se recibe un error de conexión rechazada, testear sieve usando sivtest. Si es posible conectarse a localhost pero no al nombre de host completo a través del DNS, habrá que editar el archivo dicho archivo de configuración para corregir el inconveniente. Quizá haya que remover el parámetro "localhost" de la línea de inicio de sieve, reemplazándolo por el nombre del servidor. Esto hará que sieve escuche sobre la dirección IP del servidor en vez de hacerlo sobre localhost. Si se obtiene un diálogo que permite agregar una nueva regla, el sistema está listo para ser usado. Es útil crear reglas basadas en el header X-Spam-Flag para mover el mensaje a la carpeta INBOX.Basura, y otros para mover por ejemplo listas de mail a sus respectivas carpetas. Siempre se debe asegurar de grabar las reglas antes de dejar la página, ya que de otra manera no funcionarán. Lo interesante de los filtros sieve es que aunque han sido configurados a través de SquirrelMail, se ejecutan al nivel del servidor IMAP y todo el correo recibido a través de IMAP seguirá las reglas configuradas. ===== Conclusion ===== That's pretty much it. The mail server can now send and receive mail, authenticate users, encrypt connections with SSL, and provide webmail and server-side mail filtering. Good luck with it. Félix Molinuevo\\ [[fmsi>|FMSI Sistemas de Informática]]\\ //Based on documentation written by Steve Block, 29 January 2005// ===== Agradecimientos ===== Esta guía no hubiera sido posible sin los desarrolladores de todo el software usado aquí. Me gustaría extender mis agradecimiento a todos ellos. Gracias también a los desarrolladores de Debian y a los mantenedores de paquetes por su excelente configuración de base de Debian y sus correspondientes paquetes. Gracias a Steve Block por enseñarme cómo crear mi primer servidor de correo-e. Gracias también a él por mostrarme [[http://wiki.splitbrain.org/wiki:dokuwiki|DokuWiki]], el wiki que estoy usando ahora, simple, sencillo y rápido. ===== Bibliografía ===== -Installing a Mail System on Debian Sarge: http://wiki.ev-15.com/debian:mail_system -Postfix, SASL, Cyrus IMAP, MySQL, Amavis, Postgrey, SpamAssassin, ClamAV, Squirrelmail, Mailman, Mailgraph and Openmailadmin: http://openmailadmin.ossdl.de/wiki/howto/Postfix-SASL-Cyrus-MySQL-Amavis-Postgrey-SpamAssassin-ClamAV-Squirrelmail-Mailman-Mailgraph-OMA -Postfix documentation: http://www.postfix.org/docs.html -Postfix SMTP AUTH (and TLS) HOWTO: http://postfix.state-of-mind.de/patrick.koetter/smtpauth/ -SPAM/Virus Filter on Sarge: http://www.debian-administration.org/articles/364 -Tutorial: ISP-style Email Service with Debian-Sarge and Postfix 2.1: http://workaround.org/articles/ispmail-sarge/ -Cyrus Twiki: http://cyrusimap.web.cmu.edu/twiki/bin/view/Cyrus/WebHome -How to set up a mail server on a GNU/Linux system: http://flurdy.com/docs/postfix/