Falha na entrega do postfix maildir - os meus e-mails foram perdidos?

1

Eu estava enfrentando o problema de que o postfix não pôde entregar e-mails para meu diretório pessoal. Eu tenho um servidor Ubuntu 14.04 em execução e devido a algum problema com o postfix criptografado de home-drive, não consegui acessar meu Maildir.

Em mail.log, recebi o seguinte erro:

Apr  4 09:51:35 server postfix/smtpd[13658]: connect from localhost[127.0.0.1]
Apr  4 09:51:35 server postfix/smtpd[13658]: 6FE354360A18: client=localhost[127.0.0.1]
Apr  4 09:51:35 server postfix/cleanup[13661]: 6FE354360A18: message-id=<[email protected]>
Apr  4 09:51:36 server postfix/smtpd[13658]: disconnect from localhost[127.0.0.1]
Apr  4 09:51:36 server postfix/qmgr[2085]: 6FE354360A18: from=<[email protected]>, size=87170, nrcpt=1 (queue active)
Apr  4 09:51:36 server postfix/local[13664]: warning: maildir access problem for UID/GID=1000/1000: create maildir file /home/user/Maildir/tmp/1459756296.P13664.server: Permission denied
Apr  4 09:51:36 server postfix/local[13664]: warning: perhaps you need to create the maildirs in advance
Apr  4 09:51:36 server postfix/local[13664]: 6FE354360A18: to=<andreas@localhost>, relay=local, delay=0.95, delays=0.88/0.01/0/0.06, dsn=5.2.0, status=bounced (maildir delivery failed: create maildir file /home/user/Maildir/tmp/1459756296.P13664.server: Permission denied)
Apr  4 09:51:36 server postfix/cleanup[13661]: 668984360A1A: message-id=<20160404075136.668984360A1A@server>
Apr  4 09:51:36 server postfix/bounce[13665]: 6FE354360A18: sender non-delivery notification: 668984360A1A
Apr  4 09:51:36 server postfix/qmgr[2085]: 668984360A1A: from=<>, size=4544, nrcpt=1 (queue active)
Apr  4 09:51:36 server postfix/qmgr[2085]: 6FE354360A18: removed
Apr  4 09:51:36 server postfix/smtp[13666]: 668984360A1A: to=<[email protected]>, relay=smtp.otherserver.org:587, delay=0.54, delays=0.19/0.05/0.23/0.07, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as C979113D0138)
Apr  4 09:51:36 server postfix/qmgr[2085]: 668984360A1A: removed

Eu reiniciei o servidor e esperava encontrar os e-mails que foram enviados nesse meio tempo em / var / mail / xxx, mas havia apenas um arquivo de byte zero com meu nome de usuário.

Isso significa que os e-mails que recebi nesse meio tempo foram perdidos? Como posso configurar que os emails são salvos?

EDIT: mailq mostra a fila de mensagens vazia. EDIT2: adicionado mais saída de log

    
por mercury 04.04.2016 / 18:15

2 respostas

2

Deve estar na fila de mensagens

Envie um email simples

# echo "Hello world" | swaks -4 --server smtp.example.net --from [email protected] --to [email protected] --h-Subject "Test message" --body -
=== Trying smtp.example.net:25...
=== Connected to smtp.example.net.
<-  220 smtp.example.net ESMTP Postfix
 -> EHLO tl-resin-node1.example.net
<-  250-smtp.example.net
<-  250-PIPELINING
<-  250-SIZE 10240000
<-  250-VRFY
<-  250-ETRN
<-  250-AUTH LOGIN PLAIN
<-  250-ENHANCEDSTATUSCODES
<-  250-8BITMIME
<-  250 DSN
 -> MAIL FROM:<[email protected]>
<-  250 2.1.0 Ok
 -> RCPT TO:<[email protected]>
<-  250 2.1.5 Ok
 -> DATA
<-  354 End data with <CR><LF>.<CR><LF>
 -> Date: Tue, 05 Apr 2016 03:45:43 -0400
 -> To: [email protected]
 -> From: [email protected]
 -> Subject: Test message
 -> X-Mailer: swaks v20130209.0 jetmore.org/john/code/swaks/
 ->
 -> Hello world
 ->
 ->
 -> .
<-  250 2.0.0 Ok: queued as 581271C1811
 -> QUIT
<-  221 2.0.0 Bye
=== Connection closed with remote host.

Verifique o maillog no smtp.example.net

# cat /var/log/maillog | grep 581271C1811
Apr  5 07:45:41 ci postfix/smtpd[31639]: 581271C1811: client=smtp.example.com[192.168.88.130]
Apr  5 07:45:41 ci postfix/cleanup[31642]: 581271C1811: message-id=<>
Apr  5 07:45:41 ci postfix/qmgr[31633]: 581271C1811: from=<[email protected]>, size=389, nrcpt=1 (queue active)
Apr  5 07:45:41 ci postfix/virtual[31643]: 581271C1811: to=<[email protected]>, relay=virtual, delay=0.07, delays=0.02/0.01/0/0.04, dsn=4.2.0, status=deferred (maildir delivery failed: create maildir file /var/mail/virtual/example.net/[email protected]/tmp/1459842341.P31643.ci.example.net: Permission denied)

Verifique o maillog

# postqueue -p
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
581271C1811      389 Tue Apr  5 07:45:41  [email protected]
(maildir delivery failed: create maildir file /var/mail/virtual/example.net/[email protected]/tmp/1459842341.P31643.ci.example.net: Permission denied)
                                         [email protected]

-- 1 Kbytes in 1 Request.

Corrigir as permissões

# ls -la
total 16
drwxr-xr-x  4 alex alex 4096 Mar 18 14:32 .
drwxrwxr-x. 3 root mail 4096 Apr  2 03:35 ..
drwx------  3 virtual virtual 4096 Mar 15 09:18 example.com
drwx------  3 root    virtual 4096 Mar 18 14:32 example.net

# chown virtual:virtual example.net

Descarregue a fila de mensagens e verifique novamente o maillog

# postqueue -f

Apr  5 07:49:01 ci postfix/anvil[31640]: statistics: max cache size 1 at Apr  5 07:45:41
Apr  5 07:49:29 ci postfix/qmgr[31633]: 581271C1811: from=<[email protected]>, size=389, nrcpt=1 (queue active)
Apr  5 07:49:29 ci postfix/virtual[31894]: 581271C1811: to=<[email protected]>, relay=virtual, delay=228, delays=228/0.02/0/0.06, dsn=2.0.0, status=sent (delivered to maildir)
Apr  5 07:49:29 ci postfix/qmgr[31633]: 581271C1811: removed
    
por 05.04.2016 / 09:55
1

TLDR: Por comportamento padrão do postfix, o seu email foi devolvido (ou seja, o remetente receberá uma mensagem de não entrega) e o postfix não manterá o email na fila.

Com base nos registros de mercúrio e ALex_hha, posso concluir que há comportamento diferente quando o correio foi entregue por daemon virtual (caso ALex_hha) ou daemon local (caso de mercúrio). Quando o daemon virtual não puder entregar e-mails devido a um problema de permissão, ele usará o adiamento do e-mail (retorno suave), para que o e-mail permaneça na fila.

Apr 5 07:45:41 ci postfix/virtual[31643]: 581271C1811: to=<[email protected]>, relay=virtual, delay=0.07, delays=0.02/0.01/0/0.04, dsn=4.2.0, status=deferred (maildir delivery failed: create maildir file /var/mail/virtual/example.net/[email protected]/tmp/1459842341.P31643.ci.example.net: Permission denied)

No outro caso, o daemon local irá rejeitar o email (hard bounce) para que o email não fique na fila.

Apr 4 09:51:36 server postfix/local[13664]: 6FE354360A18: to=<andreas@localhost>, relay=local, delay=0.95, delays=0.88/0.01/0/0.06, dsn=5.2.0, status=bounced (maildir delivery failed: create maildir file /home/user/Maildir/tmp/1459756296.P13664.server: Permission denied)

Esse comportamento também pode ser visualizado quando você espreita na fonte virtual / maildir.c e local / maildir.c em linha com a função dsb_simple .

local / maildir.c

    dsb_simple(why, mbox_dsn(errno, "5.2.0"),
           "create maildir file %s: %m", tmpfile);

virtual / maildir.c

    dsb_simple(why, mbox_dsn(errno, "4.2.0"),
           "create maildir file %s: %m", tmpfile);

Como posso evitar quedas duras neste caso?

AFAIK baseado no código-fonte acima, esse comportamento era inconfigurável via postfix main.cf . Mas tente definir soft_bounce = yes , mas tenha cuidado com o efeito global quando ativar este recurso .

    
por 24.05.2016 / 08:39