Eu configurei as estações de trabalho Debian em nosso departamento para usar o Exim 4 para entrega de e-mail. Também criei um alias para receber todos os e- root
mails. A configuração Exim 4 (via Ansible e debconf) tem essas configurações:
exim4_dc_eximconfig_configtype: internet
exim4_dc_readhost: …
exim4_dc_smarthost: …
exim4_dc_use_split_config: 'true'
exim4_dc_hide_mailname: 'true'
exim4_dc_mailname_in_oh: 'true'
Em cada uma das máquinas, posso mailx
enviar um e-mail para root
e ele aparecerá na minha caixa de entrada perfeitamente. Além disso , algumas execuções dos trabalhos cron são enviadas corretamente para mim.
No entanto, a maioria dos trabalhos cron falha ao entregar seus e-mails e, em vez disso, recebo o seguinte e-mail:
This message was created automatically by mail delivery software.
A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:
ueding@…
(generated from root@echo)
Reporting-MTA: dns; echo
Action: failed
Final-Recipient: rfc822;ueding@…
Status: 5.0.0
Return-path: <root@echo>
Received: from root by echo with local (Exim 4.89)
(envelope-from <root@echo>)
id 1f7Jqz-0007jU-7y
for root@echo; Sat, 14 Apr 2018 14:00:25 +0200
From: root@echo (Cron Daemon)
To: root@echo
Subject: Cron <root@echo> ansible-pull -U [email protected]:…/….git --private-key /root/.ssh/ansible_pull localhost.yml
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 8bit
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
Message-Id: <E1f7Jqz-0007jU-7y@echo>
Date: Sat, 14 Apr 2018 14:00:25 +0200
X-Exim-DSN-Information: Due to administrative limits only headers are returned
Eu realmente não entendo porque isso está acontecendo. Todas as entregas de e-mail falham ou quase todas são bem-sucedidas. Como o e-mail do cron pode falhar na maioria das estações de trabalho, mas ter sucesso em outras, enquanto os e-mails de falha na entrega sempre chegam?
O log do sistema referente ao exim na máquina, echo, é realmente esparso:
# journalctl -u exim4.service
-- Logs begin at Tue 2018-03-06 18:35:11 CET, end at Sat 2018-04-14 17:13:08 CEST. --
Apr 02 18:00:30 echo systemd[1]: Starting LSB: exim Mail Transport Agent...
Apr 02 18:01:23 echo exim4[27433]: Starting MTA: exim4.
Apr 02 18:01:23 echo systemd[1]: Started LSB: exim Mail Transport Agent.
Olhar para dentro /var/log/exim4/mainlog
serve a explicação em uma bandeja de prata:
2018-04-14 14:00:25 1f7Jqz-0007jU-7y <= root@echo U=root P=local S=7948
2018-04-14 14:00:25 1f7Jqz-0007jU-7y ** ueding@… <root@echo> R=dnslookup T=remote_smtp: message is too big (transport limit = 1)
2018-04-14 14:00:25 1f7Jqz-0007jW-BM <= <> R=1f7Jqz-0007jU-7y U=Debian-exim P=local S=1856
2018-04-14 14:00:25 1f7Jqz-0007jU-7y Completed
2018-04-14 14:00:26 1f7Jqz-0007jW-BM => ueding@… <root@echo> R=dnslookup T=remote_smtp H=… […] X=TLS1.0:RSA_AES_256_CBC_SHA1:256 CV=yes DN="C=DE,ST=…,L=…,O=…,OU=…,CN=…" C="250 2.0.0 Ok: queued as 6FCA1155FC32"
2018-04-14 14:00:26 1f7Jqz-0007jW-BM Completed
O erro provavelmente é “a mensagem é muito grande (limite de transporte = 1)”. Mas isso ainda não faz muito sentido, pois tenho 30 estações de trabalho configuradas de forma idêntica e, para algumas delas, as mensagens passam vários dias seguidos. O comprimento da mensagem deve ser o mesmo para cada máquina (exceto o comprimento do nome do host), e as duas máquinas que atualmente recebem seus e-mails têm nomes mais longos.
exemplo no registro:
isso significa que um limite máximo de 998 caracteres foi atingido
solução:
em "/etc/exim4/exim4.conf.localmacros" adicione a seguinte linha:
e reinicie o exim4.
Acho que você atingiu este bug relatado, exim4: resposta falsa rejeitada em linhas muito longas .
Na verdade, refere-se a linhas muito longas, não à mensagem em si. Tente canalizar sua mensagem
fmt -s
antes de passá-la paraexim4
.