Estou executando um sistema de suporte OSticket que utiliza a pilha Mailcow para mensagens de email.
Tudo está funcionando bem, exceto nos casos em que não podemos enviar um e-mail ao autor do ticket devido a problemas na caixa de correio, etc.
Nestes casos o que acontece é:
- OS Ticket tenta enviar um e-mail por meios convencionais através da pilha do Mailcow
- O e-mail não é enviado e o Postfix retorna um e-mail devolvido/"Correio não entregue retornado ao remetente"
- OS Ticket age como se um novo ticket tivesse sido criado pelo Mailer Daemon, que muitas vezes se perde
- Nossa equipe de suporte não está ciente de que o e-mail não foi enviado
- Nosso cliente nunca recebe ajuda.
Analisando isso no final do OSTicket, parece que o OSticket tentará corresponder a recuperação ao ticket original. . No entanto, minha configuração padrão do lado do e-mail não inclui os cabeçalhos necessários que o OSticket espera .
Gostaria de corrigir isso e parece que adicionar cabeçalhos adicionais pode ajudar o OSTicket a perceber que é um salto.
Sou muito novo no postfix, então não tenho certeza de como fazer isso, mas tenho certeza de que é possível.
Alguém poderia me ajudar a descobrir como configurar isso? Obrigado!
Incluí a fonte completa de um dos meus e-mails devolvidos. Ele está bastante redigido, mas talvez os cabeçalhos ajudem.
Return-Path: <>
Delivered-To: [REDACTED]
Received: from [REDACTED] ([[REDACTED]])
by 847cc1941aed with LMTP
id wPAfFiLbwmWYrwYAydh85g
(envelope-from <>)
for <[REDACTED]>; Wed, 07 Feb 2024 01:21:38 +0000
Received: by [REDACTED] (Postcow)
id 5482521BF8E2; Wed, 7 Feb 2024 01:21:38 +0000 (UTC)
Date: Wed, 7 Feb 2024 01:21:38 +0000 (UTC)
From: MAILER-DAEMON@[REDACTED] (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: [REDACTED]
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="CA4EC21BFE80.1707268898/[REDACTED]"
Message-Id: <20240207012138.5482521BF8E2@[REDACTED]>
This is a MIME-encapsulated message.
--CA4EC21BFE80.1707268898/[REDACTED]
Content-Description: Notification
Content-Type: text/plain; charset=us-ascii
This is the mail system at host [REDACTED].
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to postmaster.
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
<[REDACTED]>: connect to [REDACTED][[REDACTED]]:25:
Connection timed out
--CA4EC21BFE80.1707268898/[REDACTED]
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; [REDACTED]
X-Postcow-Queue-ID: CA4EC21BFE80
X-Postcow-Sender: rfc822; [REDACTED]
Arrival-Date: Fri, 2 Feb 2024 01:10:13 +0000 (UTC)
Final-Recipient: rfc822; [REDACTED]
Original-Recipient: rfc822;[REDACTED]
Action: failed
Status: 4.4.1
Diagnostic-Code: X-Postcow; connect to [REDACTED]:25:
Connection timed out
--CA4EC21BFE80.1707268898/[REDACTED]
Content-Description: Undelivered Message
Content-Type: message/rfc822
Return-Path: <[REDACTED]>
Received: from [[REDACTED]] (localhost [[REDACTED]]) by [REDACTED] (Mailerdaemon) with ESMTPSA id CA4EC21BFE80;
Fri, 2 Feb 2024 01:10:13 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=[REDACTED];
s=dkim; t=1706836214;
h=from:subject:date:message-id:to:cc:mime-version:content-type;
bh=[REDACTED]
b=[REDACTED]
Date: Fri, 02 Feb 2024 01:10:13 +0000
Message-ID: <BKAfB/m-40f2Z-AAAAAGINAACIBAAATe4OlSy5-[REDACTED]>
From: =?utf-8?Q?[REDACTED]?= <[REDACTED]>
Subject: =?UTF-8?Q?Re:=[REDACTED]?=
To: =?utf-8?Q?[REDACTED]?= [REDACTED]
Cc: =?utf-8?Q?[REDACTED]?= [REDACTED]
MIME-Version: 1.0
Content-Type: multipart/alternative;
boundary="=_9875f05c0d2ad638ed6e39eb808b5ce5"
X-Last-TLS-Session-Version: TLSv1.3
This is a message in Mime Format. If you see this, your mail reader does not support this format.
--=_9875f05c0d2ad638ed6e39eb808b5ce5
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: base64
[REDACTED]
--=_9875f05c0d2ad638ed6e39eb808b5ce5--
--CA4EC21BFE80.1707268898/[REDACTED]--
Os Campos de Identificação ( RFC 5322, 3.6.4 )
In-Reply-To
sãoReferences
projetados para ordenar respostas de email como threads. Rejeições, também conhecidas como notificações de status de entrega no suporte Postfix DSN , são baseadas no RFC 3464 , que não menciona esses cabeçalhos. É um conceito diferente das respostas por e-mail, embora a RFC 3834, 3.1.6 recomende o uso desses cabeçalhos em respostas automáticas, incluindo DSN. Não conheço nenhum parâmetro de configuração que altere esse comportamento no Postfix.Como o Postfix produz mensagens DSN bem formatadas baseadas em RFC 3464 , seria possível adicionar suporte para elas em sistemas de tickets.
Uma análise mais detalhada do osTicket
class Mail_Parse {}
revela que ele já suporta DSNs RFC 3464:Se o
Content-Type
de qualquer uma das partes da mensagem com várias partes formessage/delivery-status
, ele processaisBounceNotice()
o corpoself::splitHeaders($body)
e procura o cabeçalhoAction: failed
. A mensagem é sinalizada como devolvida se for encontrada.Nesse caso,
parse($stream)
obtém os cabeçalhos degetOriginalMessageHeaders()
, que obtém os cabeçalhos originais de umamessage/rfc822
dastext/rfc822-headers
partes da mensagem. Um DSN do Postfix possui a mensagem original e seus cabeçalhos no primeiro.references
vem doReferences
cabeçalho original ein-reply-to
é obtido deMessage-ID
ouIn-Reply-To
da mensagem original.