LPI-2 202-450 Topico 211.1: Utilização de servidores de email
Serviços de email
Índice
- 211.1 Utilização de servidores de email - Objetivos
- 211.1 Utilização de servidores de email - Conteúdo
211.1 Utilização de servidores de email - Objetivos
Peso 4
O candidato deve ser capaz de administrar um servidor de email, incluindo a configuração de aliases de email, cotas e domínios de email virtuais, que inclui saber configurar redirecionamento interno de emails.
Conhecimentos-chave:
- Arquivos de configuração do Postfix;
- Configuração básica de TLS para Postfix;
- Conhecimento básico do protocolo SMTP;
- Noções de Sendmail e Exim.
Lista parcial dos arquivos, termos e ferramentas utilizados:
- Arquivos de configuração e comandos do Postfix;
/etc/postfix/
;/var/spool/postfix
;- Comandos da camada de emulação do Sendmail;
/etc/aliases
;- Arquivos de log relacionados a email em
/var/log/
.
211.1 Utilização de servidores de email - Conteúdo
O processo de envio e recebimento de emails é composto de vários serviços interagindo entre si utilizando protocolos diferentes. Dentre esses protocolos, o SMTP (Simple Mail Transfer Protocol ou protocolo simples de transferência de correio em tradução nossa) é o responsável pelo tráfego das mensagens através da rede ou mesmo dentro de um mesmo sistema.
É importante ter em mente que o EMail (Electronic Mail ou correio
eletrônico em tradução nossa) começou a tomar forma nos anos 60 a
patir do advento dos computadores compartilhados onde vários
usuários faziam uso de um mesmo equipamento. O uso desses
equipamentos acontecia 24 horas por dia e se viu necessária a
criação de uma forma confiável de trocas de mensagens entre usuários
do mesmo sistema em turnos diferentes. Logo os primeiros sistemas de
trocas de mensagens entre usuários começaram a tomar
forma. Levando-se em conta que as primeiras redes de interconexões
que deram forma a ARPANET começaram a ser implementadas apenas no
final de 1960 toda essa troca de mensagens prévia eram feitas em
caixas de entradas dentro de um único computador. Porém em 1971 a
ARPANET já era uma realidade assim o primeiro EMail realmente
parecido com o que temos hoje foi enviado, introduzindo a agora
familiar sintaxe de endereço com o símbolo @
designando o endereço
do sistema do usuário. Levou mais dez anos mas em 1981 foi
introduzido o protocolo SMTP.
Os componentes da comunicação via EMail
Como já exposto acima o processo da comunicação via EMail é composto de vários serviços e/ou softwares e protocolos interagindo entre si estes softwares são divididos em 4 categorias:
- MUA: Mail User Agent ou agente de usuário de correio em tradução nossa. Trata-se, por exemplo, do programa que é executado pelo usuário final para escrever, ler e remeter EMails;
- MSA: Mail Submission Agent ou agente de submissão de correio em tradução nossa. Trata-se do software que recebe os EMails enviados pelos MUA e interage com o MTA;
- MTA: Mail Transfer Agent ou agente de transferência de correio em tradução nossa. Ele aceita o EMail enviado pelo MUA através do MSA e se a conta de destino for de um dos domínios dele próprio ele a enviará ao MDA, caso a conta de destino for de um domínio externo ele a eviará para outro MTA que irá receber e processar a mensagem.
MDA: Mail Delivery Agent ou agente de entrega de correio em tradução nossa. Trata-se do responsável por processar e entregar as mensagens nas caixas de entradas dos usuários do domínio em questão (locais ou remotas). Sendo também conhecido como LDA (Local Delivery Agent ou agente de entrega local em tradução nossa).
Tabela 1: Tabela de exemplos de componentes da comunicação via EMail MUA MSA MTA MDA Outlook SMTP SMTP POP Thunderbird postfix Postfix IMAP Evolution Exim Exim Procmail SquirrelMail Sendmail Sendmail Maildrop Sieve Dovecot Courier
O funcionamento do EMail
O EMail funciona manipulando as mensagens através de caixas de entrada sejam elas locais ou enviando a caixas de entradas que residam em outros servidores.
Figura 1: Modelo do transito do EMail
Descritivo do fluxo de transito do EMail:
- O usuário tem acesso a sua caixa de entrada usando um dos vários clientes de EMail disponíveis (Thunderbird, Outlook, Evolution…) que são classificados como MUA. De uso do MUA o usuário pode compor seu EMail e enviá-lo ao MSA utilizando o protocolo SMTP;
- O MSA recebe a mensagem que foi enviada pelo MUA no passo anterior e interage com o MTA para a entrega do EMail;
- O MTA ao receber a mensagem do MSA verifica o campo
destinatário da mensagem e:
- se a mensagem for destinada a um usuário do domínio administrado pelo próprio MTA ele a entregara ao MDA para entrega na caixa de entrada do destinatário;
se a mensagem for destinada a um usuário de um domínio externo o MTA fará uma consulta no DNS requisitando quais os registros MX (Mail eXchanger ou trocador de correio em tradução nossa) para o domínio de destino e encaminhará o EMail para os MTA que respondem por essas entradas MX também utilizando o protocolo SMTP;
Figura 2: Detalhe da entrega de EMails para domínios diferentes
- o MTA do domínio de destino receberá via protocolo SMTP a mensagem do MTA de origem fará a verificação no endereço de destinatário e se este endereço for de uma das contas abaixo dele ele a entregará ao seu MDA para a entrega na caixa de entrada do destinatário. Caso a conta não exista ele responderá ao MTA de origem com uma mensagem de bounce negando a entrega com uma mensagem de rejeição padrão explicando o motivo;
- Por fim o usuário destinatário com seu MUA consultará o MDA de seu domínio utilizando o protocolo POP3 ou o protocolo IMAP para receber a mensagem em seu computador.
Protocolos envolvidos
- POP3
- (Post Office Protocol ou protocolo de agência postal em tradução nossa), é o protocolo que o MUA utiliza para para buscar as mensagens para a caixa de entrada em conjunto com o MDA, este assunto será abordado com mais profundidade to tópico 211.3;
- IMAP
- (Internet Message Access Protocol ou protocolo de acesso a mensagens pela Internet em tradução nossa) é utilizado pelos MUAs para verificar os status dos EMails (emails lidos, deletados ou movidos) através de múltiplos clientes de EMail. Com o IMAP, uma copia de cada mensagem é salva no servidor logo que as tarefas de sincronização são completadas. Este assunto também será abordado com mais profundidade no tópico 211.3.
O protocolo SMTP
O protocolo SMTP foi concebido tendo em mente as contas locais de usuário. A função do daemon SMTP é receber as mensagens destinadas aos usuários locais do sistema e encaminhar, via rede, as mensagens destinadas a usuários que não correspondam a contas do sistema local.
Como já exposto categoria de programas que tem essa função é chamada MTA os softwares mais tradicionais dessa categoria em código aberto são o Sendmail, Exim, e o Postfix.
A porta de comunicação padrão do SMTP é a 25/TCP onde o daemon MTA aguarda a chegada de mensagens enviadas por outro MTA na rede. Um usuário remoto autorizado também pode se comunicar com o MTA através do protocolo SMTP para enviar EMails. Neste caso a conexão será através do MSA pela porta 587/TCP para fins de criptografia e autenticação.
Os MTAs para o Linux
Agora vamos explanar os MTAs mais comuns em servidores GNU/Linux:
Sendmail
O Sendmail é agora conhecido como Proofpoint (após a Proofpoint, Inc adquirir a Sendmail, inc) é de longe o mais popular e um dos mais antigos MTAs da plataforma GNU/Linux. No entanto ele é bastante limitado em comparação com os MTAs modernos.
Por conta de seu setup complexo e mecanismos de segurança fracos novos MTAs surgiram como alternativas ao Sendmail.
Exim
O Exim é um MTA Free (GPL) desenvolvido para sistemas operacionais do tipo Unix como o Linux, Mac OSX, Solaris e outros. O Exim oferece um grande nível de flexibilidade no roteamento de mensagens em uma rede, com mecanismos e facilidades excepcionais para o monitoramento de mensagens recebidas, é o MTA padrão da distribuição Debian GNU/Linux.
Dentre suas características podemos citar:
- Não conta com suporte aos protocolos POP3 e IMAP;
- Suporta os protocolos SMTP (RFC 2821) e LMTP (RFC 2033, o LMTP é uma alternativa ao SMTP para situações onde o lado receptor não conta com uma fila de correio);
- Suas configurações incluem ACLs, scan de conteúdo, criptografia e controle de roteamento de mensagens;
- Uma documentação excelente;
- Tem um utilitário chamado Lemonade que provê extensões para os protocolos SMTP e IMAP para prover mensagens para clientes móveis.
Qmail
É outro MTA livre e open-source disponível para o GNU/Linux. É considerado confiável, eficiente e oferece recursos de segurança abrangentes, portanto, um pacote MTA seguro. Porém está há muito tempo sem receber novas releases, sendo possivelmente e infelizmente um projeto abandonado.
É um pacote relativamente pequeno mas rico em recursos, que incluem:
- Roda em vários sistemas operacionais Unix-like;
- Instalação simples e rápida;
- Configuração automática de clientes;
- Contem uma organização separada entre endereços, arquivos e programas;
- Suporte completo a grupos de endereços;
- Permite que os usuários criem suas listas de email próprias;
- Suporta e é fácil de configurar listas de email;
- Suporta VERPs (variable envelope return path addresses ou envelopes com caminho de endereço de retorno - em tradução nossa - na requisição) o EMail não entrege pode revelar o endereço do destinatário não entregue sem exigir que o proprietário da lista analise as mensagens de bounce;
- tem prevenção automática de loops nas listas de EMail;
- suporta o gerenciador de listas Ezmlm.
Postfix
É um MTA multi-plataforma que foi desenhado e desenvolvido por Wietse Zweitze Venema para seu servidor de EMail enquanto ele trabalhava no departamento de pesquisa da IBM.
Foi desenvolvido como uma alternativa ao conhecido e popular Sendmail.
Ele empresta muitas das propriedades do Sendmail, mas tem uma operação interna totalmente distinta. Além disso é rápido e fácil de configurar tendo um mecanismo de operação seguro. Suas características principais são:
- Controle de lixo eletrônico;
- suporta múltiplos protocolos;
- suporta bancos de dados;
- suporta caixas de entradas;
- suporte a manipulação de endereços e muito mais.
Para o exame LPI2 devemos focar nossos estudos sobre o Postfix e seus arquivos de configuração. Sobre os outros MTAs o que importa é ter uma noção sobre sua existência e características básicas.
O diretório /etc/postfix
É o diretório que abriga os arquivos de configuração principais do postfix.
┌─[root@centos7lpi]──[22:46]──[~] └─[45]─># tree /etc/postfix/ /etc/postfix/ ├── access ├── canonical ├── generic ├── header_checks ├── main.cf ├── master.cf ├── relocated ├── transport └── virtual 0 directories, 9 files
main.cf
É o arquivo de configuração principal do Postfix. Dentro do arquivo há uma grande quantidade de comentários documentando as várias diretivas de configuração, o arquivo tem perto de 700 linhas.
Com um arquivo tão extenso é difícil analisar por ele a
configuração corrente, para facilitar existe o comando postconf
este aliado a opção -n
mostrará apenas as diretivas que
foram ajustadas (excluindo-se as que estejam com valores padrão).
┌─[root@centos7lpi]──[22:46]──[~] └─[46]─># postconf -n alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases command_directory = /usr/sbin config_directory = /etc/postfix daemon_directory = /usr/libexec/postfix data_directory = /var/lib/postfix debug_peer_level = 2 debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5 html_directory = no inet_interfaces = localhost inet_protocols = all mail_owner = postfix mailq_path = /usr/bin/mailq.postfix manpage_directory = /usr/share/man mydestination = $myhostname, localhost.$mydomain, localhost newaliases_path = /usr/bin/newaliases.postfix queue_directory = /var/spool/postfix readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES sample_directory = /usr/share/doc/postfix-2.10.1/samples sendmail_path = /usr/sbin/sendmail.postfix setgid_group = postdrop unknown_local_recipient_reject_code = 550
Observação: para ver todas os valores das diretivas do Postfix
incluindo os valores padrão execute o comando postconf
sem
argumentos.
Vamos verificar as diretivas mais importantes do arquivo
main.cf
:
myhostname
por padrão especifica o nome deste serviço de MTA na Internet. Para servidores em redes locais o hostname do próprio servidor basta. Porém em servidores que ficarão alcançáveis na Internet este valor deve corresponder a entrada DNS que o identificará na Internet (incluindo apontamento reverso);
myhostname = centos7lpi.infralinux.com.br
mydomain
especifica o nome de domínio para este serviço de MTA. Por padrão é utilizado o valor de
$myhostname
menos a primeira porção;mydomain = infralinux.com.br
myorigin
Determina o domínio que aparecerá nos EMails enviados a partir do servidor local. O padrão é o valor
$myhostname
porém pode ser mais interessante mudar para o valor$mydomain
para não expor o nome do servidor;myorigin = $mydomain
disable_vrfy_command
é uma diretiva que eventualmene é oculta no arquivo
main.cf
. Esta diretiva lida com o problema de mineração de endereços de EMail executando algumas tratativas que tornam esta prática mais difícil. É uma diretiva útil de ser ativada em servidores que ficam expostos na Internet devendo ser configurada comoyes
. Essa diretiva mesmo que não apareça no arquivomain.cf
tem o valor padrão comono
;disable_vrfy_command = yes
inet_interfaces
determina quais interfaces no servidor que o Postfix irá esperar por conexões, o valor padrão é
localhost
. Porém para fazer o Postfix atender a clients da rede esta diretiva pode ser setada paraall
;inet_interfaces = all
mydestination
especifica para quais domínios as mensagens recebidas devem ser entregues localmente e não encaminhadas para outro servidor geralmente é setado com múltiplos valores separados por vírgulas;
mydestination = $myhostname, localhost.$mydomain, localhost
Essa diretiva também pode ser utilizada quando precisa-se que o MTA precisa responder para mais de um domínio mantendo as mesmas contas, tipo
jeremias@infralinux.com.br
ejeremias@redes.eti.br
sendo as mesmas contas.relay_domains
define para quais domínios será feito relay (direcionamento) de EMails recebidos de clientes desconhecidos (fora das redes autorizadas). O padrão é aceitar todos os EMails cujos destinos estejam definidos em
mydestination
;relay_domains = $mydestination
sender_canonical_maps
- indica o caminho (path) para uma tabela de mapeamento de endereços, permite transformar um endereço remetente de "usuario@dominio.feio" para "usuario@dominio.bonito";
relayhost
por padrão, o servidor Postfix entregará os EMails diretamente na Internet. Caso não seja esse o comportamento desejado ou possível, pode ser especificado um caminho indireto. O servidor que servirá de ponte deve ser definido como valor dessa diretiva;
relayhost = mailserver.infralinux.com.br
Observação: para linhas de configuração muito longas do main.cf é possível inserir uma quebra de linha no contúdo de alguma diretiva e continuar na próxima linha, desde que se mantenha um (1) espaço em branco de endentação.
myorigin = $mydomain mydestination = localhost mynetworks = 127.0.0.0/8
Comandos da camada de emulação do Sendmail
Como já exposto o Sendmail é o MTA mais antigo, logo os outros
sistemas de MTA que vieram após ele mantiveram um nível de
compatibilidade através de uma camada de emulação. Assim podemos
utilizar comandos do Sendmail na CLI indiferente do MTA que está
instalado. Exemplos disso são os comandos mailq
, o comando
sendmail
e o comando newaliases
.
O comando mailq
invoca sendmail -bp
, que lista o estado atual
das filas de email locais. Cada entrada mostra o número ID do
arquivo na fila, o tamanho da mensagem, a hora de chegada,
remetente e os destinatários que ainda precisam ser entregues. Se
uma mensagem não pôde ser entregue na última tentativa, é exibida a
razão da falha.
┌─[root@centos7lpi]──[03:55]──[~] └─[50]─># sendmail -bp -Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient------- 5A0F861A4DDD 524 Mon May 21 03:45:15 user1@centos7lpi.infralinux.com.br (connect to localhost.com[78.125.224.73]:25: Connection refused) user2@localhost.com 8C43F61A4DC9 447 Mon May 21 03:46:04 user1@centos7lpi.infralinux.com.br (connect to localhost.com[78.125.224.73]:25: Connection refused) user2@localhost.com -- 1 Kbytes in 2 Requests. ┌─[root@centos7lpi]──[03:55]──[~] └─[51]─># mailq -Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient------- 5A0F861A4DDD 524 Mon May 21 03:45:15 user1@centos7lpi.infralinux.com.br (connect to localhost.com[78.125.224.73]:25: Connection refused) user2@localhost.com 8C43F61A4DC9 447 Mon May 21 03:46:04 user1@centos7lpi.infralinux.com.br (connect to localhost.com[78.125.224.73]:25: Connection refused) user2@localhost.com -- 1 Kbytes in 2 Requests.
Aliases
O comando newaliases
invoca sendmail -I
, que atualiza a tabela
de aliases. Os aliases são nomes alternativos para entrega de
EMail em uma conta local. É possível, por exemplo, criar um alias
para que todas as mensagens destinadas para admin
sejam entregues
na conta do usuário root
. Os aliases são definidos no arquivo
/etc/aliases
.
# # Aliases in this file will NOT be expanded in the header from # Mail, but WILL be visible over networks or from /bin/mail. # # >>>>>>>>>> The program "newaliases" must be run after # >> NOTE >> this file is updated for any changes to # >>>>>>>>>> show through to sendmail. # # Basic system aliases -- these MUST be present. mailer-daemon: postmaster postmaster: root # General redirections for pseudo accounts. bin: root daemon: root adm: root lp: root sync: root shutdown: root halt: root mail: root news: root uucp: root operator: root ...
Cada alias é definido em uma linha, no formato destinatário:
conta-local
. Utiliza-se a vírgula para definir mais de uma conta
local para o mesmo destinatário:
root: jeremias,firmino
Após alterar o arquivo /etc/aliases
, é necessário executar o
comando newaliases
ou o comando sendmail -I
para atualizar a
tabela de aliases utilizada pelo MTA. Os destinatários não
incorporam o nome de domínio no endereço de EMail, pois a entrega
local está subordinada aos domínios que o MTA trata como locais.
Virtual
O conceito do arquivo /etc/postfix/virtual
é similar ao conceito
dos aliases mas ele é usado para redirecionar EMails para
destinos virtuais. É um conceito comum em servidores
multi-domínios. Tal como direcionar mensagens de
jeremias@infralinux.com.br
para jeremias@redes.eti.br
. Também de
forma análoga aos aliases será criada uma lista apontando que
uma mensagem de um endereço vá para outro qualquer.
abc@xyz.com user1 efg@lmnop.com root
Assim como no caso dos aliases precisamos converter o arquivo
para o formato binário porém utilizando o comando postmap
postmap /etc/postfix/virtual
Agora precisamos ajustar a diretiva virtual_alias_map
no arquivo
main.cf
:
virtual_alias_map = unix:hash:/etc/postfix/virtual
Por fim reiniciar o daemon do Postfix.
O comando mail
O comando mail
está contido no pacote mailx
. Trata-se de um
utilitário simples em linha de comando para interagir com o MTA que
está rodando no servidor. Assim em nosso servidor de testes podemos
enviar um email para o usuário root
a partir do usuário user1
.
┌─[root@centos7lpi]──[00:06]──[~] └─[67]─># su - user1 Último login:Qua Dez 8 00:04:13 -03 2021em pts/0 [user1@centos7lpi ~]$ mail -s "hello root" root@localhost Olá!! Eu sou o user1... EOT [user1@centos7lpi ~]$ exit logout ┌─[root@centos7lpi]──[00:06]──[~] └─[68]─># mail Heirloom Mail version 12.5 7/5/10. Type ? for help. "/var/spool/mail/root": 2 messages 1 new 1 user1@centos7lpi.inf Wed Dec 8 00:05 20/696 "hello root" >N 2 user1@centos7lpi.inf Wed Dec 8 00:06 18/684 "hello root" & Message 2: From user1@centos7lpi.infralinux.com.br Wed Dec 8 00:06:28 2021 Return-Path: <user1@centos7lpi.infralinux.com.br> X-Original-To: root@localhost Delivered-To: root@localhost.infralinux.com.br Date: Wed, 08 Dec 2021 00:06:27 -0300 To: root@localhost.infralinux.com.br Subject: hello root User-Agent: Heirloom mailx 12.5 7/5/10 Content-Type: text/plain; charset=iso-8859-1 From: user1@centos7lpi.infralinux.com.br Status: R Olá!! Eu sou o user1... & Held 2 messages in /var/spool/mail/root
No exemplo acima o user1
utilizou o modo interativo onde ele cria
a mensagem e após digitá-la ele entra com a combinação de teclas CTRL+D
para sair do modo de edição (onde o terminal emite EOT
).
Também podemos trabalhar de modo não interativo utilizando o |
:
echo "Isto é um e-mail de teste" | mail -s "Assunto Teste 2" root@localhost
Porém para mensagens grandes o echo
é limitado, como alternativa
usamos o <
para direcionar um arquivo para o comando mail
:
mail -s "Assunto Teste 3" root@localhost < /tmp/texto
Contas de EMail
As tradicionais contas de usuários no sistema já não são mais o principal modo de administrar contas de EMail em ambientes de média ou larga escala. Mesmo em ambeintes de pequena escala, como uma intranet de poucos usuários, o ônus de administrar contas de usuários Unix tradicionais apenas para oferecer uma conta de EMail acessada remotamente torna mais atraente outros tipos de gestão de contas, no caso as contas virtuais.
Uma conta virtual substitui a conta de usuário Linux tradicional como mecanismo de identificação de usuários no sistema de EMail. Além dessas contas e dos aliases para elas, o MTA pode consultar outras fontes que informem quais são os domínios administrados localmente e as contas de email associadas a eles.
As informações de domínios e contas virtuais podem ser armazenadas
em arquivos de texto ou em bancos de dados. Para informações
armazenadas num banco de dados MySQL, as seguintes entradas devem
constar no arquivo /etc/postfix/main.cf
:
virtual_mailbox_domains = mysql:/etc/postfix/vmail-domains.cf virtual_mailbox_maps = mysql:/etc/postfix/vmail-mailboxes.cf virtual_alias_maps = mysql:/etc/postfix/vmail-aliases.cf
As diretivas acima indicam os arquivos que contém as informações de
acesso ao banco de dados. Por exemplo, o arquivo
/etc/postfix/vmail-domains.cf
deve possuir um conteúdo no formato
a seguir:
user = vmail-user password = p4ssw0rd hosts = 127.0.0.1 dbname = vmail-db query = SELECT 1 FROM virtual_domains WHERE name='%s'
A partir deste arquivo, o Postfix vai utilizar as credenciais em
user
e password
para acessar o banco de dados indicado em
dbname
. Os domínios que constarem na tabela virtual_domains
serão considerados domínios administrados pelo Postfix local.
Os demais arquivos cumprem função semelhante, definindo em quais
tabelas do banco de dados são encontrados os endereços de EMail
(que substituem as contas de usuários locais) e a tabela com os
aliases de EMail. Após alterar os arquivos com as definições de
acesso, é necessário executar o comando postmap
:
postmap /etc/postfix/vmail-*.cf
Com a execução do comando serão gerados arquivos binários com o
sufixo .db
para cada arquivo de definições. Nesses arquivos são
armazenadas as informações extraídas do banco de dados e que serão
utilizadas pelo Postfix.
Segurança
O Postfix permite implementar criptografia TLS para garantir a
identidade do servidor e a criptografia dos dados trafegados. Para
isso é necessário que tenha sido gerado o certificado de
autenticidade do domínio e a chave privada correspondente
(consultar o tópico 208.2 para detalhes da geração do
certificado). O certificado e as opções de TLS devem ser incluídas
no arquivo /etc/postfix/main.cf
.
smtpd_use_tls = yes smtpd_tls_auth_only = yes smtpd_tls_cert_file = /etc/ssl/certs/mailcert.pem smtpd_tls_key_file = /etc/ssl/certs/mail.key
As opções smtpd_tls_cert_file
e smtpd_tls_key_file
indicam a
localização dos arquivos do certificado e da chave privada. Com
essas alterações a comunicação do Postfix com outros servidores
SMTP será criptografada e a identidade do servidor assegurada pelo
certificado.
O diretório /var/spool/postfix
É o diretório usado para as atividades do Postfix, é para onde vão as mensagens enfileiradas.
┌─[root@centos7lpi]──[00:42]──[/var/spool/postfix] └─[73]─># ll total 0 drwx------. 2 postfix root 6 Dez 8 00:06 active drwx------. 2 postfix root 6 Abr 1 2020 bounce drwx------. 2 postfix root 6 Abr 1 2020 corrupt drwx------. 2 postfix root 6 Abr 1 2020 defer drwx------. 2 postfix root 6 Abr 1 2020 deferred drwx------. 2 postfix root 6 Abr 1 2020 flush drwx------. 2 postfix root 6 Abr 1 2020 hold drwx------. 2 postfix root 6 Dez 8 00:06 incoming drwx-wx---. 2 postfix postdrop 6 Dez 8 00:06 maildrop drwxr-xr-x. 2 root root 80 Dez 8 00:05 pid drwx------. 2 postfix root 256 Dez 7 22:40 private drwx--x---. 2 postfix postdrop 73 Dez 7 22:40 public drwx------. 2 postfix root 6 Abr 1 2020 saved drwx------. 2 postfix root 6 Abr 1 2020 trace
Existe um bom número de diretórios aqui. A maioria desses
diretórios só terá informações se a configuração do Postfix estiver
retendo algum EMail por algum motivo ou se estiver esperando pra
entregá-lo, caso contrário, a maioria desses diretórios (exceto
pid
ou corrupt
) devem permanecer vazios.
O diretório /var/spool/mail
É o diretório padrão para as caixas de entrada. No caso por padrão os EMails serão entregues nos arquivos existentes nomeados com os nomes dos usuários dentro desse diretório.
┌─[root@centos7lpi]──[00:45]──[/var/spool/mail] └─[79]─># ll total 4 -rw-------. 1 root mail 1391 Dez 8 00:06 root -rw-rw----. 1 user1 mail 0 Dez 8 00:00 user1
Quando o Postfix recebe uma mensagem, se ela for para um usuário
local então ela será colocada em /var/spool/mail/<username>
mas se
ele for enviá-la para outro lugar ela existirá no diretório
/var/spool/postfix
ficando lá até ser entregue no MTA de destino,
depois ela será eliminada.
Logs do sistema de EMail
O Postfix usa o daemon syslog
para seus registros. A
configuração disso fica em /etc/syslog.conf
ou em
/etc/rsyslog.conf
dependendo da distribuição usada.
┌─[root@centos7lpi]──[00:52]──[/var/spool/mail] └─[83]─># cat /etc/rsyslog.conf | grep maillog mail.* -/var/log/maillog ┌─[root@centos7lpi]──[00:52]──[/var/spool/mail] └─[84]─># tail /var/log/maillog Dec 8 00:05:48 centos7lpi postfix/pickup[1368]: 5F06C87DD90: uid=1000 from=<user1> Dec 8 00:05:48 centos7lpi postfix/cleanup[2577]: 5F06C87DD90: message-id=<20211208030548.5F06C87DD90@centos7lpi.infralinux.com.br> Dec 8 00:05:48 centos7lpi postfix/qmgr[1369]: 5F06C87DD90: from=<user1@centos7lpi.infralinux.com.br>, size=505, nrcpt=1 (queue active) Dec 8 00:05:49 centos7lpi postfix/local[2579]: 5F06C87DD90: to=<root@localhost.infralinux.com.br>, orig_to=<root@localhost>, relay=local, delay=1.6, delays=1/0.36/0/0.26, dsn=2.0.0, status=sent (delivered to mailbox) Dec 8 00:05:49 centos7lpi postfix/qmgr[1369]: 5F06C87DD90: removed Dec 8 00:06:27 centos7lpi postfix/pickup[1368]: D701787DBE9: uid=1000 from=<user1> Dec 8 00:06:27 centos7lpi postfix/cleanup[2577]: D701787DBE9: message-id=<20211208030627.D701787DBE9@centos7lpi.infralinux.com.br> Dec 8 00:06:28 centos7lpi postfix/qmgr[1369]: D701787DBE9: from=<user1@centos7lpi.infralinux.com.br>, size=503, nrcpt=1 (queue active) Dec 8 00:06:28 centos7lpi postfix/local[2579]: D701787DBE9: to=<root@localhost.infralinux.com.br>, orig_to=<root@localhost>, relay=local, delay=0.44, delays=0.33/0/0/0.11, dsn=2.0.0, status=sent (delivered to mailbox) Dec 8 00:06:28 centos7lpi postfix/qmgr[1369]: D701787DBE9: removed
Como mostrado acima no rsyslog
está configurado para escrever os
registros do postfix no arquivo /var/log/maillog
e por fim os
registros constantes nesse arquivo.
O comando qshape
ajuda o administrador a entender a distribuição
de mensagens da fila do Postfix, elas serão classificadas por
tempo, domínio do remetente ou domínio do destinatário. O programa
precisa de acesso de leitura aos diretórios de filas e arquivos de
filas, portanto deve ser executado como superusuário ou por um
mail_owner
especificado no main.cf
(geralmente usuário
postfix
).
# qshape T 5 10 20 40 80 160 320 640 1280 1280+ TOTAL 5 0 0 0 0 0 0 0 0 0 5 gmail.com 4 0 0 0 0 0 0 0 0 0 4 yahoo.com 1 0 0 0 0 0 0 0 0 0 1
Por fim esses são os pontos requisitados nesse tópico.