From: Wilfried Goesgens Date: Mon, 30 Jul 2012 21:50:42 +0000 (+0200) Subject: SMTP-Client: when relaying failed also notify aide that somethings broken. X-Git-Tag: v8.16~25 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=cdde4bbeab443bfb5bd6f1a3a5950bd12e7779b7 SMTP-Client: when relaying failed also notify aide that somethings broken. (we don't need to do that if the message was sent via a room and the bounce will end up in the aide room anyways) --- diff --git a/citadel/modules/smtp/serv_smtpeventclient.c b/citadel/modules/smtp/serv_smtpeventclient.c index d8f46ca93..03697d30c 100644 --- a/citadel/modules/smtp/serv_smtpeventclient.c +++ b/citadel/modules/smtp/serv_smtpeventclient.c @@ -177,7 +177,7 @@ eNextState FinalizeMessageSend_DB(AsyncIO *IO) Msg->MyQItem->QueMsgID = -1; if (Msg->IDestructQueItem) - smtpq_do_bounce(Msg->MyQItem, Msg->msgtext); + smtpq_do_bounce(Msg->MyQItem, Msg->msgtext, Msg->pCurrRelay); if (Msg->nRemain > 0) { diff --git a/citadel/modules/smtp/serv_smtpqueue.c b/citadel/modules/smtp/serv_smtpqueue.c index 8c5c7378e..5161a1eb0 100644 --- a/citadel/modules/smtp/serv_smtpqueue.c +++ b/citadel/modules/smtp/serv_smtpqueue.c @@ -510,7 +510,7 @@ StrBuf *smtp_load_msg(OneQueItem *MyQItem, int n) * instructions for "5" codes (permanent fatal errors) and produce/deliver * a "bounce" message (delivery status notification). */ -void smtpq_do_bounce(OneQueItem *MyQItem, StrBuf *OMsgTxt) +void smtpq_do_bounce(OneQueItem *MyQItem, StrBuf *OMsgTxt, ParsedURL *Relay) { static int seq = 0; @@ -561,6 +561,7 @@ void smtpq_do_bounce(OneQueItem *MyQItem, StrBuf *OMsgTxt) { ++num_bounces; + StrBufAppendBufPlain(Msg, HKEY(" "), 0); StrBufAppendBuf(Msg, ThisItem->Recipient, 0); StrBufAppendBufPlain(Msg, HKEY(": "), 0); StrBufAppendBuf(Msg, ThisItem->StatusMessage, 0); @@ -577,6 +578,18 @@ void smtpq_do_bounce(OneQueItem *MyQItem, StrBuf *OMsgTxt) return; } + if ((StrLength(MyQItem->SenderRoom) == 0) && MyQItem->HaveRelay) { + /* one message that relaying is broken is enough; no extra room error message. */ + StrBuf *RelayDetails = NewStrBuf(); + + StrBufPrintf(RelayDetails, + "Relaying via %s failed permanently. \n Reason:\n%s\n Revalidate your relay configuration.", + ChrPtr(Relay->URL), + ChrPtr(Msg)); + CtdlAideMessage(ChrPtr(RelayDetails), "Relaying Failed"); + FreeStrBuf(&RelayDetails); + } + boundary = NewStrBufPlain(HKEY("=_Citadel_Multipart_")); StrBufAppendPrintf(boundary, "%s_%04x%04x", diff --git a/citadel/modules/smtp/smtpqueue.h b/citadel/modules/smtp/smtpqueue.h index 8efe13210..b2778b995 100644 --- a/citadel/modules/smtp/smtpqueue.h +++ b/citadel/modules/smtp/smtpqueue.h @@ -79,6 +79,6 @@ int GetShutdownDeliveries(OneQueItem *MyQItem); void RemoveQItem(OneQueItem *MyQItem); int CountActiveQueueEntries(OneQueItem *MyQItem, int before); StrBuf *SerializeQueueItem(OneQueItem *MyQItem); -void smtpq_do_bounce(OneQueItem *MyQItem, StrBuf *OMsgTxt); +void smtpq_do_bounce(OneQueItem *MyQItem, StrBuf *OMsgTxt, ParsedURL *Relay); int CheckQEntryIsBounce(MailQEntry *ThisItem);