--- layout: es/page title: Instalación del MTA --- # Instalación del MTA

Alaveteli envía y recibe correo. Necesitará configurar su servidor de correo (MTA) para gestionarlo adecuadamente. Aquí ofrecemos ejemplos para Postfix y Exim4, dos de los MTA más populares.

## Cómo gestiona el correo Alaveteli ### Correo de solicitud Cuando alguien realiza una solicitud de información pública a una autoridad a través de Alaveteli, la aplicación envía un correo con la solicitud a la autoridad. La dirección `reply-to` del correo es un campo especial que indica que toda respuesta debe dirigirse automáticamente de vuelta a Alaveteli, para que Alaveteli pueda distinguir en qué solicitud debe mostrarse la respuesta recibida. Este comportamiento requiere cierta configuración del MTA en el servidor donde se halla Alaveteli para encaminar todos los correos a esta dirección especial con el objetivo de que Alaveteli los gestione mediante su script `script/mailin`. Las direcciones especiales tienen la siguiente estructura: Partes de esta dirección son controladas con opciones incluidas en `config/general.yml`: INCOMING_EMAIL_PREFIX = 'foi+' INCOMING_EMAIL_DOMAIN = 'example.com' Si se produce algún error en Rails durante el procesamiento del correo, el script `script/mailin` devuelve un código de salida `75` al MTA. Postfix y Exim (y tal vez otros) entienden esta acción como una señal para que el MTA lo vuelva a intentar más tarde. Además, se envía por correo el rastro de pila a `CONTACT_EMAIL`. Las instalaciones de [producción]({{ page.baseurl }}/docs/glossary/#production) de Alaveteli deberían realizar copias de seguridad de los correos enviados a direcciones especiales. Puede configurar su MTA para realizar estas copias en un buzón de correo independiente. ### Correo transaccional Alaveteli también envía correos a usuarios sobre sus solicitudes, para informarles cuando alguien ha respondido o solicitarles que realicen alguna acción. Configure la dirección desde la que se envían estos mensajes en la opción [`CONTACT_EMAIL`]({{ page.baseurl }}/docs/customising/config/#contact_email) de `config/general.yml`: CONTACT_EMAIL = 'team@example.com' La dirección contenida en [`CONTACT_EMAIL`]({{ page.baseurl }}/docs/customising/config/#contact_email) también es visible en varios lugares del sitio para que los usuarios puedan ponerse en contacto con el equipo que gestiona el sitio web. Debe configurar su MTA de forma que entregue el correo enviado a estas direcciones a los administradores del sitio para que puedan responder en consecuencia. ### Correo de tracks Los usuarios suscritos a las actualizaciones del sitio, denominadas `tracks`, reciben correos cuando hay novedades que pueden interesarles. Configure la dirección desde la que se envían estos mensajes en la opción [`TRACK_SENDER_EMAIL`]({{ page.baseurl }}/docs/customising/config/#track_sender_email) ubicada en `config/general.yml`: TRACK_SENDER_EMAIL = 'track@example.com' ### Gestión de rebotado automático (opcional) Debido a que [`CONTACT_EMAIL`]({{ page.baseurl }}/docs/customising/config/#contact_email) y [`TRACK_SENDER_EMAIL`]({{ page.baseurl }}/docs/customising/config/#track_sender_email) aparecen en la cabecera `From:` de los correos enviados desde Alaveteli, a veces reciben correos de respuesta, incluidos mensajes rebotados y notificaciones de tipo «fuera de oficina». Alaveteli proporciona un script (`script/handle-mail-replies`) que gestiona los mensajes rebotados y las notificaciones de tipo «fuera de oficina» y reenvía los correos genuinos a los administradores. También evita que se sigan enviando correos de tracks a direcciones de correo de usuarios que parezcan tener problemas permanentes de entrega. Para utilizar la gestión automática de mensajes rebotados, asigne a [`TRACK_SENDER_EMAIL`]({{ page.baseurl }}/docs/customising/config/#track_sender_email) y a [`CONTACT_EMAIL`]({{ page.baseurl }}/docs/customising/config/#contact_email) una dirección que filtrará a través de `script/handle-mail-replies`. Los mensajes que no sean de rebote o «fuera de oficina» se reenviarán a [`FORWARD_NONBOUNCE_RESPONSES_TO`]({{ page.baseurl }}/docs/customising/config/#forward_nonbounce_responses_to), opción en la que debe definir un alias de correo que apunte a la lista de administradores del sitio. Consulte las indicaciones específicas para su MTA sobre cómo llevar esto a cabo con [Exim]({{ page.baseurl }}/docs/installing/email#filtre-los-mensajes-entrantes-hacia-direcciones-de-administracin) y [Postfix]({{ page.baseurl }}/docs/installing/email#filtre-mensajes-entrantes-en-las-direcciones-de-administracin-del-sitio). _Nota:_ La gestión de rebotado no se aplica a los [correos de solicitud]({{ page.baseurl }}/docs/installing/email#correo-de-solicitud). Los mensajes rebotados de autoridades se añaden a la página de la solicitud para que el usuario pueda ver lo ocurrido. Los usuarios pueden pedir ayuda a los administradores del sitio para que se vuelva a enviar la solicitud, si es necesario. ---
Asegúrese de seguir las indicaciones correctas para el MTA específico que utilice: * [Postfix](#configuracin-de-ejemplo-con-postfix) * [Exim4](#configuracin-de-ejemplo-con-exim4) ## Configuración de ejemplo con Postfix Esta sección muestra un ejemplo de configuración de su MTA con **Postfix**. Si utiliza Exim4 en lugar de Postfix, consulte la [configuración de ejemplo con Exim4](#configuracin-de-ejemplo-con-exim4). ### Instale Postfix # Instale debconf para poder configurar de forma no interactiva apt-get -qq install -y debconf >/dev/null # Establezca la configuración predeterminada «Internet Site» echo postfix postfix/main_mailer_type select 'Internet Site' | debconf-set-selections # Defina el nombre de host (sustituya example.com por su nombre de host) echo postfix postfix/mail_name string "example.com" | debconf-set-selections # Instale Postfix DEBIAN_FRONTEND=noninteractive apt-get -qq -y install postfix >/dev/null ### Configure Postfix #### Redirija el correo entrante de solicitudes en Alaveteli Si el usuario de Unix que va a poner el sitio en funcionamiento es `alaveteli` y el directorio donde está instalado Alaveteli es `/var/www/alaveteli`, cree una ruta para la recepción de correos de solicitudes: cat >> /etc/postfix/master.cf < cat >> /etc/postfix/main.cf < Este manual presupone que ha definido INCOMING_EMAIL_PREFIX como foi+ en config/general.yml Redirija todo el correo entrante cuya dirección `To:` empiece por `foi+` hacia la ruta de `alaveteli` (`/var/www/alaveteli/script/mailin`, como se especifica en `/etc/postfix/master.cf` en el inicio de esta sección): cat > /etc/postfix/transports < /etc/postfix/recipient_bcc < /etc/postfix/recipients <> /etc/aliases <> /etc/aliases < Este manual presupone que ha configurado las opciones siguientes en config/general.yml: Modifique los siguientes ejemplos con las direcciones que ha configurado: Cree un nuevo flujo de gestión de respuestas: cat >> /etc/postfix/master.cf <> /etc/postfix/transports <> /etc/logrotate.d/rsyslog </dev/null 2>&1 || true endscript } EOF #### Aplique los cambios Como usuario root, aplique todos estos cambios con los siguientes comandos: service rsyslog restart newaliases postmap /etc/postfix/transports postmap /etc/postfix/recipients postmap /etc/postfix/recipient_bcc postfix reload #### Solución de problemas (Postfix) Para probar la entrega de correo, ejecute: $ /usr/sbin/sendmail -bv foi+request-1234@example.com Asegúrese de sustituir `example.com` por su dominio. Este comando indica si el envío de correo a `foi\+.*example.com` y a la cuenta de la copia de seguridad funciona (no envía ningún correo para probarlo). Si funciona, debería recibir un correo de informe de entrega con un texto similar a: : delivery via alaveteli: delivers to command: /var/www/alaveteli/script/mailin : delivery via local: delivers to mailbox También puede probar otros alias que haya configurado para su dominio en esta sección, con el objetivo de comprobar si entregarán el correo tal como espera. Por ejemplo, puede probar el redireccionamiento de mensajes rebotados del mismo modo. El texto de este informe de entrega debería ser similar a: : delivery via alaveteli_replies: delivers to command: /var/www/alaveteli/script/handle-mail-replies Es posible que necesite instalar el paquete `mailutils` para leer el informe de entrega utilizando el comando `mail` en un nuevo servidor: apt-get install mailutils Si los correos no son recibidos por su instalación de Alaveteli, encontrará más consejos sobre errores de correo entrante en el apartado de [solución de problemas generales de correo]({{ page.baseurl }}/docs/installing/email#solucin-de-problemas-generales-de-correo). ## Configuración de ejemplo con Exim4 Esta sección muestra un ejemplo de configuración de su MTA con **Exim4**. Si utiliza Postfix en lugar de Exim4, consulte la [configuración de ejemplo con Postfix](#configuracin-de-ejemplo-con-postfix). ### Instale Exim4 Instale Exim4: apt-get install exim4 ### Configure Exim4 #### Configure Exim para que reciba correo desde otros servidores Edite `/etc/exim4/update-exim4.conf.conf`. Defina las siguientes opciones (utilice su nombre de host, no `example.com`): dc_eximconfig_configtype='internet' dc_other_hostnames='example.com' dc_local_interfaces='0.0.0.0 ; ::1' dc_use_split_config='true' Esta última línea indica a Exim que utilice los archivos de `/etc/exim4/conf.d` para configurarse a sí mismo. #### Defina las variables generales y las opciones de registro Cree `/etc/exim4/conf.d/main/04_alaveteli_options` con el comando: cat > /etc/exim4/conf.d/main/04_alaveteli_options <<'EOF' ALAVETELI_HOME=/var/www/alaveteli ALAVETELI_USER=alaveteli log_file_path=/var/log/exim4/exim-%slog-%D MAIN_LOG_SELECTOR==+all -retry_defer extract_addresses_remove_arguments=false EOF Esta acción configura `ALAVETELI_HOME` y `ALAVETELI_USER` para su uso en otros archivos de configuración y define las opciones de registro. - **`ALAVETELI_HOME`:** define el directorio de instalación de Alaveteli. - **`ALAVETELI_USER`:** debería ser el usuario de Unix que va a poner en funcionamiento su sitio. Debe tener permisos de escritura en `ALAVETELI_HOME`. - **`log_file_path`:** El nombre y la ubicación de los archivos de registro creados por Exim deben coincidir con los esperados por el script `load-mail-server-logs`. - **`MAIN_LOG_SELECTOR`:** El script `check-recent-requests-sent` espera que los registros contengan la información de remitente `from=<...>`, por lo que aumentamos la minuciosidad de los registros. - **`extract_addresses_remove_arguments`:** si se le asigna el valor `false`, cuando el paquete gem `mail` utilice la opción de línea de comando `-t` para especificar las direcciones de entrega, Exim interpretará que dichas direcciones deben añadirse, no eliminarse. Consulte [esta publicación de `mail`](https://github.com/mikel/mail/issues/70) para obtener más información.
Nota: Si está editando una configuración existente de Exim en lugar de crear una nueva, compruebe la opción untrusted_set_sender en /etc/exim4/conf.d/main/02_exim4-config_options. Por defecto, los usuarios que no son de confianza en Exim solo pueden definir una dirección de remitente vacía para declarar que un mensaje no debe generar nunca ningún rebote. untrusted_set_sender puede definirse como una lista de patrones de dirección, de forma que los usuarios que no sean de confianza puedan definir direcciones de remitente que concuerden con alguno de los patrones listados. Si especifica una lista de patrones, también necesitará añadir ALAVETELI_USER a la lista MAIN_TRUSTED_USERS para permitir que se defina la ruta de retorno del correo saliente. Esta opción también se encuentra en /etc/exim4/conf.d/main/02_exim4-config_options en una configuración dividida. Busque la línea que empieza por MAIN_TRUSTED_USERS, similar a:
MAIN_TRUSTED_USERS = uucp
y añada el usuario de Alaveteli:
MAIN_TRUSTED_USERS = uucp : alaveteli
Si untrusted_set_sender está definido como *, los usuarios que no sean de confianza podrán establecer direcciones de remitente sin restricciones, así que no será necesario añadir ALAVETELI_USER a la lista MAIN_TRUSTED_USERS.
#### Redirija el correo entrante de solicitudes desde Exim hacia Alaveteli En esta sección añadiremos una configuración al flujo de correo entrante para direcciones especiales de Alaveteli hacia Alaveteli y también las enviaremos al buzón local de la copia de seguridad. Cree el usuario de Unix `backupfoi`: adduser --quiet --disabled-password \ --gecos "Alaveteli Mail Backup" backupfoi Especifique un `router` de Exim para las direcciones especiales de Alaveteli, que redirigirá los mensajes hacia Alaveteli mediante una ruta de transporte local: cat > /etc/exim4/conf.d/router/04_alaveteli <<'EOF' alaveteli_request: debug_print = "R: alaveteli for $local_part@$domain" driver = redirect data = ${lookup{$local_part}wildlsearch{ALAVETELI_HOME/config/aliases}} pipe_transport = alaveteli_mailin_transport EOF Cree `/etc/exim4/conf.d/transport/04_alaveteli`, que define las propiedades de la rita de transporte `transport` que entregará el correo a Alaveteli: cat > /etc/exim4/conf.d/transport/04_alaveteli <<'EOF' alaveteli_mailin_transport: driver = pipe command = $address_pipe ${lc:$local_part} current_directory = ALAVETELI_HOME home_directory = ALAVETELI_HOME user = ALAVETELI_USER group = ALAVETELI_USER EOF
Este manual presupone que ha definido INCOMING_EMAIL_PREFIX como foi+ en config/general.yml.
Cree el archivo `config/aliases` que el `router` `alaveteli_request` de Exim obtendrá. Este archivo redirige el correo desde direcciones especiales a `script/mailin` y al usuario `backupfoi`. cat > /var/www/alaveteli/config/aliases <<'EOF' ^foi\\+.*: "|/var/www/alaveteli/script/mailin", backupfoi EOF _Nota:_ Sustituya `/var/www/alaveteli` con la ruta correcta de Alaveteli, si es necesario. #### Defina sus grupos de correo de destinatarios de contacto Para definir grupos de destinatarios de las direcciones de correo `team@` y `user-support@` de su dominio, añada registros de alias para ellos en `/var/www/alaveteli/config/aliases`: cat >> /var/www/alaveteli/config/aliases <> /var/www/alaveteli/config/aliases < Este manual presupone que ha configurado lo siguiente en config/general.yml: Modifique los siguientes ejemplos con las direcciones que haya configurado. Modifique la línea `user-support` ubicada en `/var/www/alaveteli/config/aliases`: user-support: |/var/www/alaveteli/script/handle-mail-replies #### Registro Deberá indicar a Alaveteli dónde se almacenan los archivos de registro y que se hallan en formato Exim. Actualice [`MTA_LOG_PATH`]({{ page.baseurl }}/docs/customising/config/#mta_log_path) y [`MTA_LOG_TYPE`]({{ page.baseurl }}/docs/customising/config/#mta_log_type) en `config/general.yml`: MTA_LOG_PATH: '/var/log/exim4/exim-mainlog-*' MTA_LOG_TYPE: 'exim' #### Aplique los cambios en Exim Finalmente, ejecute los comandos: update-exim4.conf service exim4 restart Si existe el archivo `/etc/exim4/exim4.conf`, `update-exim4.conf` silenciosamente no hará nada. Algunas distribuciones incluyen este archivo. Si es su caso, necesitará eliminarlo o renombrarlo antes de ejecutar `update-exim4.conf`. #### Solución de problemas (Exim) Para probar la entrega de correo, ejecute como usuario con permisos (sustituyendo `example.com` por su nombre de dominio): exim4 -bt foi+request-1234@example.com Este comando debería indicarle qué routers están siendo procesados. Debería mostrarse algo similar a: $ exim4 -bt foi+request-1234@example.com R: alaveteli for foi+request-1234@example.com foi+request-1234@example.com -> |/var/www/alaveteli/script/mailin transport = alaveteli_mailin_transport R: alaveteli for backupfoi@your.machine.name R: system_aliases for backupfoi@your.machine.name R: userforward for backupfoi@your.machine.name R: procmail for backupfoi@your.machine.name R: maildrop for backupfoi@your.machine.name R: lowuid_aliases for backupfoi@your.machine.name (UID 1001) R: local_user for backupfoi@your.machine.name backupfoi@your.machine.name <-- foi+request-1234@example.com router = local_user, transport = mail_spool Esta información indica que la parte encargada del redireccionamiento (que hace que los correos hacia `foi\+.*@example.com` se reenvíen al script `mailin` de Alaveteli y a la cuenta local de copia de seguridad) está funcionando. Puede probar el redireccionamiento de los mensajes rebotados del mismo modo: exim4 -bt user-support@example.com R: alaveteli for user-support@example.com user-support@example.com -> |/var/www/alaveteli/script/handle-mail-replies transport = alaveteli_mailin_transport Si los correos no son recibidos por su instalación de Alaveteli, encontrará más consejos sobre errores de correo entrante en la siguiente sección. También existe una fantástica [hoja de referencia de Exim](http://bradthemad.org/tech/notes/exim_cheatsheet.php) en línea, que puede resultarle útil. ## Solución de problemas generales de correo Primero necesita comprobar si su MTA está entregando los correos entrantes correspondientes al comando `script/mailin`. Existen varios formas de configurar su MTA para que lo haga. Hemos documentado una forma de hacerlo [en Exim]({{ page.baseurl }}/docs/installing/email/#configuracin-de-ejemplo-con-exim4), incluyendo [un comando que puede utilizar]({{ page.baseurl }}/docs/installing/email/#solucin-de-problemas-exim) para comprobar que el redireccionamiento del correo está configurado correctamente. También hemos documentado una forma de configurar [Postfix]({{ page.baseurl }}/docs/installing/email/#configuracin-de-ejemplo-con-postfix), con un [comando de depuración]({{ page.baseurl }}/docs/installing/email/#solucin-de-problemas-postfix) similar. En segundo lugar necesitará probar que el propio script de correo está funcionando correctamente mediante su ejecución desde la línea de comando. Para ello, encuentre una dirección "To" válida para una solicitud en su sistema. Puede hacer esto a través de la interfaz de administración de su sitio o desde la línea de comando, de este modo: $ ./script/console Loading development environment (Rails 2.3.14) >> InfoRequest.find_by_url_title("why_do_you_have_such_a_fancy_dog").incoming_email => "request-101-50929748@localhost" Ahora tome el origen de un correo válido (hay algunos correos de muestra en `spec/fixtures/files/`), edite la cabecera `To:` para que concuerde con dicha dirección y después rediríjalo a través del script de correo. Un código de salida distinto de cero significa que se ha producido un error. Por ejemplo: $ cp spec/fixtures/files/incoming-request-plain.email /tmp/ $ perl -pi -e 's/^To:.*/To: /' /tmp/incoming-request-plain.email $ ./script/mailin < /tmp/incoming-request-plain.email $ echo $? 75 El script `mailin` envía por correo los detalles de todo error a `CONTACT_EMAIL` (definido en el archivo `general.yml`). Un problema común consiste en que el usuario que ejecuta el MTA to tiene permisos de escritura en `files/raw_emails/`. Si todo parece correcto a nivel local, deberá comprobar también desde otro ordenador conectado a internet que el servidor DNS para su dominio indica que su servidor de Alaveteli está gestionando el correo y que su servidor está recibiendo correo en el puerto 25. El siguiente comando es una consulta para preguntar qué servidor está gestionando el correo para el dominio `example.com`, que recibe como respuesta `mail.example.com`. $ host -t mx example.com example.com mail is handled by 5 mail.example.com. Este comando siguiente prueba la conexión con el puerto 25, el puerto SMTP estándar, en `mail.example.com`, y es rechazada. $ telnet mail.example.com 25 Trying 10.10.10.30... telnet: connect to address 10.10.10.30: Connection refused La siguiente transcripción muestra una conexión satisfactoria en la que el servidor acepta el correo para su entrega (los comandos que debe introducir se indican con el carácter `$`): $ telnet 10.10.10.30 25 Trying 10.10.10.30... Connected to 10.10.10.30. Escape character is '^]'. 220 mail.example.com ESMTP Exim 4.80 Tue, 12 Aug 2014 11:10:39 +0000 $ HELO X 250 mail.example.com Hello X [10.10.10.1] $ MAIL FROM: 250 OK $ RCPT TO: 250 Accepted $ DATA 354 Enter message, ending with "." on a line by itself $ Subject: Test $ $ Este es un correo de prueba. $ . 250 OK id=1XHA03-0001Vx-Qn QUIT