/*
* Utility functions for the Citadel SMTP implementation
*
- * Copyright (c) 1998-2017 by the citadel.org team
+ * Copyright (c) 1998-2021 by the citadel.org team
*
* This program is open source software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3.
#include <errno.h>
#include <sys/types.h>
#include <syslog.h>
-
-#if TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# if HAVE_SYS_TIME_H
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
-#endif
-
+#include <time.h>
#include <sys/wait.h>
#include <ctype.h>
#include <string.h>
#include "ctdl_module.h"
#include "smtp_util.h"
-const char *smtp_get_Recipients(void)
-{
- citsmtp *sSMTP = SMTP;
+const char *smtp_get_Recipients(void) {
+ struct citsmtp *sSMTP = SMTP;
if (sSMTP == NULL)
return NULL;
* SDB_BOUNCE_ALL Advise the sender that all deliveries have failed and will not be retried
* SDB_WARN Warn the sender about all 4XX transient delays
*/
-void smtp_do_bounce(const char *instr, int is_final)
-{
+void smtp_do_bounce(const char *instr, int is_final) {
int i;
int lines;
int status;
int num_bounces = 0;
int bounce_this = 0;
struct CtdlMessage *bmsg = NULL;
- recptypes *valid;
+ struct recptypes *valid;
int successful_bounce = 0;
static int seq = 0;
StrBuf *BounceMB;
StrBufAppendPrintf(boundary, "%s_%04x%04x", CtdlGetConfigStr("c_fqdn"), getpid(), ++seq);
-
/* Start building our bounce message */
bmsg = (struct CtdlMessage *) malloc(sizeof(struct CtdlMessage));
bmsg->cm_format_type = FMT_RFC822;
CM_SetField(bmsg, eAuthor, HKEY("Citadel"));
CM_SetField(bmsg, eOriginalRoom, HKEY(MAILROOM));
- CM_SetField(bmsg, eNodeName, CtdlGetConfigStr("c_nodename"), strlen(CtdlGetConfigStr("c_nodename")));
CM_SetField(bmsg, eMsgSubject, HKEY("Delivery Status Notification (Failure)"));
StrBufAppendBufPlain(BounceMB, HKEY("Content-type: multipart/mixed; boundary=\""), 0);
StrBufAppendBuf(BounceMB, boundary, 0);
StrBufAppendBufPlain(BounceMB, HKEY("\r\n"), 0);
StrBufAppendBufPlain(BounceMB, HKEY("Content-type: text/plain\r\n\r\n"), 0);
- if (is_final == SDB_BOUNCE_ALL)
- {
+ if (is_final == SDB_BOUNCE_ALL) {
StrBufAppendBufPlain(
BounceMB,
HKEY( "A message you sent could not be delivered "
"Giving up on the following addresses:\n\n"),
0);
}
- else if (is_final == SDB_BOUNCE_FATALS)
- {
+ else if (is_final == SDB_BOUNCE_FATALS) {
StrBufAppendBufPlain(
BounceMB,
HKEY( "A message you sent could not be delivered "
"The following addresses were undeliverable:\n\n"),
0);
}
- else if (is_final == SDB_WARN)
- {
+ else if (is_final == SDB_WARN) {
StrBufAppendBufPlain(
BounceMB,
HKEY("A message you sent has not been delivered "
"The following addresses were undeliverable:\n\n"),
0);
}
- else // should never get here
- {
+ else { // should never get here
StrBufAppendBufPlain(BounceMB, HKEY("This message should never occur.\n\n"), 0);
}
valid = validate_recipients(bounceto, smtp_get_Recipients (), 0);
if (valid != NULL) {
if (valid->num_error == 0) {
- CtdlSubmitMsg(bmsg, valid, "", QP_EADDR);
+ CtdlSubmitMsg(bmsg, valid, "");
successful_bounce = 1;
}
}
/* If not, post it in the Aide> room */
if (successful_bounce == 0) {
- CtdlSubmitMsg(bmsg, NULL, CtdlGetConfigStr("c_aideroom"), QP_EADDR);
+ CtdlSubmitMsg(bmsg, NULL, CtdlGetConfigStr("c_aideroom"));
}
/* Free up the memory we used */
}
-
-
-
char *smtpcodes[][2] = {
{ "211 - System status / system help reply" },
{ "214", "Help message" },
};
-
char *smtpstatus(int code) {
int i;
return("Unknown or other SMTP status");
}
-