Módulo de Correo#
El módulo principal de correo implementa la funcionalidad básica de un servidor proxy de correo: esto incluye soporte para los protocolos SMTP, IMAP y POP3, configuración de bloques de servidor, enrutamiento de solicitudes de correo, autenticación de usuarios y soporte SSL/TLS para asegurar las conexiones de correo.
Los otros módulos en esta sección amplían esta funcionalidad, permitiéndote configurar y optimizar de manera flexible el servidor de correo para varios escenarios y requisitos.
Cuando se compila desde el código fuente,
este módulo no se compila de forma predeterminada;
debe habilitarse con la
opción de compilación Predeterminado — server Establece la dirección y el puerto para el socket en el que el servidor aceptará conexiones. Es posible especificar solo el puerto, de modo que Angie escuche en todas las interfaces IPv4 disponibles (y IPv6, si está habilitado). La dirección también puede ser un nombre de host, por ejemplo: Las direcciones IPv6 se especifican entre corchetes: Los sockets de dominio UNIX se especifican con el prefijo Nota Los diferentes servidores deben escuchar en distintos pares dirección:puerto. permite especificar que todas las conexiones aceptadas en este puerto funcionen en modo SSL. permite especificar que todas las conexiones aceptadas en este puerto usen
el protocolo PROXY. La información obtenida se pasa al
servidor de autenticación y puede usarse para
cambiar la dirección del cliente. La directiva establece el parámetro backlog en la llamada establece el tamaño del buffer de recepción (la opción establece el tamaño del buffer de envío (la opción este parámetro indica hacer una llamada este parámetro determina (mediante la opción de socket IPV6_V6ONLY) si un socket IPv6 que escucha en una dirección comodín [::] aceptará solo conexiones IPv6 o tanto IPv6 como IPv4. Este parámetro está activado por defecto. Solo puede configurarse una vez al inicio. habilita la aceptación de conexiones a través de Multipath TCP (MPTCP),
compatible desde la versión 5.6 del kernel de Linux. Configura el comportamiento "TCP keepalive" para el socket de escucha. si se omite este parámetro, se aplicarán los valores predeterminados del sistema operativo para el socket la opción SO_KEEPALIVE se activa para el socket la opción SO_KEEPALIVE se desactiva para el socket Algunos sistemas operativos permiten configurar parámetros de TCP keepalive por
socket mediante las opciones de socket Por ejemplo: establecerá el tiempo de inactividad (TCP_KEEPIDLE) en 30 minutos, dejará el intervalo de sondeo (TCP_KEEPINTVL) en su valor predeterminado del sistema y establecerá el número de sondeos (TCP_KEEPCNT) en 10. Los diferentes servidores deben escuchar en distintos pares dirección:puerto. Proporciona el contexto del archivo de configuración en el que se especifican las directivas del servidor de correo. Added in version 1.7.0. Establece el número máximo de comandos emitidos durante la autenticación
para mejorar la protección contra ataques DoS. Establece el número de errores de protocolo tras los cuales se cierra la conexión. Establece el protocolo para un servidor proxy. Los protocolos admitidos son IMAP, POP3 y SMTP. Si la directiva no se especifica, el protocolo puede detectarse automáticamente en función del puerto bien conocido indicado en la directiva Cuando se compila desde el código fuente, pueden deshabilitarse los protocolos innecesarios usando las opciones de compilación
Predeterminado mail, server Configura los servidores de nombres usados para obtener el nombre de host del cliente y pasarlo al servidor de autenticación, así como en el comando XCLIENT al hacer proxy de SMTP. Por ejemplo: La dirección puede especificarse como un nombre de dominio o una dirección IP, con un puerto opcional. Si no se especifica el puerto, se usa el 53. Los servidores de nombres se consultan de forma round-robin. Por defecto, Angie almacena en caché las respuestas usando el valor TTL de la respuesta. El parámetro opcional valid permite sobrescribirlo: parámetro opcional que permite sobrescribir la validez de las entradas en caché De forma predeterminada, Angie buscará tanto direcciones IPv4 como IPv6 al resolver. deshabilita la resolución de direcciones IPv4 deshabilita la resolución de direcciones IPv6 parámetro opcional que habilita la recopilación de estadísticas para la zona especificada Truco Para prevenir ataques de spoofing DNS, se recomienda configurar servidores DNS en una red local de confianza debidamente asegurada. Truco Al ejecutar en Docker, usa la dirección interna de su servidor DNS, como Establece el tiempo de espera para las operaciones DNS, por ejemplo: Establece la configuración de un servidor. Establece el nombre del servidor que se usa: en el saludo inicial del servidor POP3/SMTP; en la sal durante la autenticación SASL CRAM-MD5; en el comando EHLO al conectarse al backend SMTP, si el envío del comando XCLIENT está habilitado. Si la directiva no se especifica, se usará el hostname de la máquina. Establece el tiempo de espera que se utiliza antes de iniciar el proxy hacia el backend.--with-mail
.
En paquetes e imágenes de nuestros repositorios,
el módulo está incluido en la compilación.Ejemplo de Configuración#
worker_processes auto;
error_log /var/log/angie/error.log info;
events {
worker_connections 1024;
}
mail {
server_name mail.example.com;
auth_http localhost:9000/cgi-bin/auth.cgi;
imap_capabilities IMAP4rev1 UIDPLUS IDLE LITERAL+ QUOTA;
pop3_auth plain apop cram-md5;
pop3_capabilities LAST TOP USER PIPELINING UIDL;
smtp_auth login plain cram-md5;
smtp_capabilities "SIZE 10485760" ENHANCEDSTATUSCODES 8BITMIME DSN;
xclient off;
server {
listen 25;
protocol smtp;
}
server {
listen 110;
protocol pop3;
proxy_pass_error_message on;
}
server {
listen 143;
protocol imap;
}
server {
listen 587;
protocol smtp;
}
}
Directivas#
listen#
listen
dirección[:puerto] [ssl
] [proxy_protocol
] [backlog=
número] [rcvbuf=
tamaño] [sndbuf=
tamaño] [bind
] [ipv6only=
on
| off
] [reuseport
] [so_keepalive=
on|off|[keepidle
]:[samp:keepintvl]:[samp:keepcnt]];listen 127.0.0.1:110;
listen *:110;
listen 110; # equivalente a *:110
listen localhost:110;
listen [::1]:110;
listen [::]:110;
unix:
:listen unix:/var/run/angie.sock;
ssl
proxy_protocol
listen
puede tener varios parámetros adicionales específicos para llamadas al sistema relacionadas con sockets.backlog=
númerolisten()
que limita la
longitud máxima de la cola de conexiones pendientes. Por defecto,
backlog
se establece en -1
en FreeBSD, DragonFly BSD y macOS, y
en 511 en otras plataformas.rcvbuf=
tamañoSO_RCVBUF
) para el socket de escucha.sndbuf=
tamañoSO_SNDBUF
) para el socket de escucha.bind
bind()
separada para un
par dirección:puerto dado. Si existen varias
directivas listen con el mismo puerto pero diferentes direcciones,
y una de las directivas listen
escucha en todas las direcciones para el
puerto dado (*:puerto
), Angie solo hará bind()
a *:puerto.
Debe tenerse en cuenta que en este caso se ejecutará la llamada al sistema
getsockname()
para determinar la dirección que aceptó la conexión.
Si se utilizan los parámetros backlog
, rcvbuf
, sndbuf
, ipv6only
,
reuseport
o so_keepalive
, entonces para un
par dirección:puerto dado siempre se realizará una llamada bind()
separada.ipv6only=on
| off
multipath
so_keepalive=on
| off
| [keepidle]:[keepintvl]:[keepcnt]
''
on
off
TCP_KEEPIDLE
, TCP_KEEPINTVL
y
TCP_KEEPCNT
. En dichos sistemas (actualmente, Linux 2.4+, NetBSD 5+ y FreeBSD 9.0-STABLE), pueden configurarse mediante los parámetros keepidle,
keepintvl y keepcnt. Se pueden omitir uno o dos parámetros, en cuyo caso se aplicarán los valores predeterminados del sistema para la opción de socket correspondiente.so_keepalive=30m::10
mail#
max_commands#
max_errors#
protocol#
listen
:imap: 143, 993
pop3: 110, 995
smtp: 25, 587, 465
--without-mail_imap_module
, --without-mail_pop3_module
y
--without-mail_smtp_module
.resolver#
resolver
dirección ... [valid=
tiempo] [ipv4=
on
| off
] [ipv6=
on
| off
] [status_zone=
zona];resolver off;
resolver 127.0.0.53 [::1]:5353;
valid
resolver 127.0.0.53 [::1]:5353 valid=30s;
ipv4=off
ipv6=off
status_zone
127.0.0.11
.resolver_timeout#
resolver_timeout 5s;
server#
server_name#
timeout#