Módulo Mail#
O módulo mail principal implementa funcionalidades básicas para um servidor proxy de email: isso inclui suporte para protocolos SMTP, IMAP e POP3, configuração de blocos de servidor, roteamento de requisições de email, autenticação de usuário e suporte SSL/TLS para proteger conexões de email.
Os outros módulos nesta seção estendem essa funcionalidade, permitindo que você configure e otimize flexivelmente o servidor de email para vários cenários e requisitos.
Ao compilar a partir do código fonte,
este módulo não é compilado por padrão;
ele deve ser habilitado com a
Padrão — server Define o address e port para o socket no qual o servidor aceitará conexões. É possível especificar apenas a port, para que o Angie escute em todas as interfaces IPv4 (e IPv6, se habilitado) disponíveis. O endereço também pode ser um nome de host, por exemplo: Endereços IPv6 são especificados entre colchetes: Sockets de domínio UNIX são especificados com o prefixo Nota Servidores diferentes devem escutar em pares address:port diferentes. permite especificar que todas as conexões aceitas nesta porta devem funcionar em modo SSL. permite especificar que todas as conexões aceitas nesta porta devem usar
o protocolo PROXY. As informações obtidas são passadas para o
servidor de autenticação e podem ser usadas para
alterar o endereço do cliente. A diretiva define o parâmetro backlog na chamada define o tamanho do buffer de recepção (a opção define o tamanho do buffer de envio (a opção este parâmetro instrui a fazer uma chamada este parâmetro determina (via a opção de socket IPV6_V6ONLY) se um socket IPv6 escutando em um endereço curinga [::] aceitará apenas conexões IPv6 ou tanto conexões IPv6 quanto IPv4. Este parâmetro está ativado por padrão. Só pode ser definido uma vez na inicialização. habilita aceitar conexões via Multipath TCP (MPTCP),
suportado no kernel Linux versão 5.6 e posterior. Configura o comportamento "TCP keepalive" para o socket de escuta. se este parâmetro for omitido, as configurações do sistema operacional estarão em vigor para o socket a opção SO_KEEPALIVE é ativada para o socket a opção SO_KEEPALIVE é desativada para o socket Alguns sistemas operacionais suportam a configuração de parâmetros TCP keepalive
por socket usando as opções de socket Por exemplo, definirá o timeout de inatividade (TCP_KEEPIDLE) para 30 minutos, deixará o intervalo de sonda (TCP_KEEPINTVL) em seu padrão do sistema, e definirá a contagem de sondas (TCP_KEEPCNT) para 10 sondas. Servidores diferentes devem escutar em pares address:port diferentes. Fornece o contexto do arquivo de configuração no qual as diretivas do servidor de email são especificadas. Adicionado na versão 1.7.0. Define o número máximo de comandos emitidos durante a autenticação
para melhorar a proteção contra ataques DoS. Define o número de erros de protocolo após os quais a conexão é fechada. Define o protocolo para um servidor proxy. Os protocolos suportados são IMAP, POP3 e SMTP. Se a diretiva não for definida, o protocolo pode ser detectado automaticamente com base na porta conhecida especificada na diretiva Ao compilar a partir do código-fonte, protocolos desnecessários podem ser desabilitados usando as
Padrão mail, server Configura servidores de nomes usados para encontrar o nome do host do cliente para passá-lo ao servidor de autenticação, e no comando XCLIENT ao fazer proxy SMTP. Por exemplo: O endereço pode ser especificado como um nome de domínio ou endereço IP, com uma porta opcional. Se a porta não for especificada, a porta 53 é usada. Os servidores de nomes são consultados em modo round-robin. Por padrão, o Angie armazena em cache as respostas usando o valor TTL de uma resposta. O parâmetro opcional valid permite sobrescrever isso: parâmetro opcional permite sobrescrever a validade da entrada em cache Por padrão, o Angie procurará endereços IPv4 e IPv6 durante a resolução. desabilita a busca de endereços IPv4 desabilita a busca de endereços IPv6 parâmetro opcional, habilita coleta de estatísticas para a zona especificada Dica Para prevenir spoofing de DNS, é recomendado configurar servidores DNS em uma rede local confiável adequadamente protegida. Dica Ao executar no Docker, use seu endereço de servidor DNS interno como Define um timeout para operações DNS, por exemplo: Define a configuração para um servidor. Define o nome do servidor que é usado: na saudação inicial do servidor POP3/SMTP; no salt durante a autenticação SASL CRAM-MD5; no comando EHLO ao conectar ao backend SMTP, se a passagem do comando XCLIENT estiver habilitada. Se a diretiva não for especificada, o hostname da máquina é usado. Define o timeout que é usado antes que o proxy para o backend seja iniciado.--with-mail
opção de compilação.
Em pacotes e imagens dos nossos repositórios,
o módulo está incluído na compilação.Exemplo de Configuração#
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;
}
}
Diretivas#
listen#
listen
address[:port] [ssl
] [proxy_protocol
] [backlog=
number] [rcvbuf=
size] [sndbuf=
size] [bind
] [ipv6only=
on
| off
] [reuseport
] [so_keepalive=
on|off|[keepidle
]:[samp:keepintvl]:[samp:keepcnt]];listen 127.0.0.1:110;
listen *:110;
listen 110; # mesmo que *:110
listen localhost:110;
listen [::1]:110;
listen [::]:110;
unix:
:listen unix:/var/run/angie.sock;
ssl
proxy_protocol
listen
pode ter vários parâmetros adicionais específicos para chamadas de sistema relacionadas a sockets.backlog=
numberlisten()
que limita o
comprimento máximo da fila de conexões pendentes. Por padrão,
backlog
é definido como -1
no FreeBSD, DragonFly BSD e macOS, e
como 511 em outras plataformas.rcvbuf=
sizeSO_RCVBUF
) para o socket de escuta.sndbuf=
sizeSO_SNDBUF
) para o socket de escuta.bind
bind()
separada para um
par address:port específico. O fato é que se houver várias
diretivas listen com a mesma port mas endereços diferentes,
e uma das diretivas listen
escuta em todos os endereços para a
porta especificada (*:port
), o Angie fará bind()
apenas para *:port.
Deve-se notar que a chamada de sistema getsockname()
será
feita neste caso para determinar o endereço que aceitou a conexão.
Se os parâmetros backlog
, rcvbuf
, sndbuf
, ipv6only
,
reuseport
ou so_keepalive
forem usados, então para um
par address:port específico uma chamada bind()
separada sempre será feita.ipv6only=on
| off
multipath
so_keepalive=on
| off
| [keepidle]:[keepintvl]:[keepcnt]
''
on
off
TCP_KEEPIDLE
, TCP_KEEPINTVL
e
TCP_KEEPCNT
. Em tais sistemas (atualmente, Linux 2.4+,
NetBSD 5+ e FreeBSD 9.0-STABLE), eles podem ser configurados usando os parâmetros keepidle,
keepintvl e keepcnt. Um ou dois parâmetros podem ser omitidos, neste
caso a configuração padrão do sistema para a opção de socket correspondente estará
em vigor.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
e
‑‑without‑mail_smtp_module
opções de compilação.resolver#
resolver
endereço ... [valid=
tempo] [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#