From: Wilfried Goesgens Date: Sun, 24 Feb 2013 11:38:12 +0000 (+0100) Subject: Lists: don't overwrite from: header. this only needs to be done for participates. X-Git-Tag: v8.20~90 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=a5e759daa03e43dfdd940e96c13cded7ba8de39c Lists: don't overwrite from: header. this only needs to be done for participates. --- diff --git a/citadel/modules/network/serv_netmail.c b/citadel/modules/network/serv_netmail.c index 733a6ae37..a04bcfb12 100644 --- a/citadel/modules/network/serv_netmail.c +++ b/citadel/modules/network/serv_netmail.c @@ -322,7 +322,6 @@ void network_process_list(SpoolControl *sc, struct CtdlMessage *omsg, long *dele CtdlMsgSetCM_Fields(msg, 'K', SKEY(sc->Users[roommailalias])); - CtdlMsgSetCM_Fields(msg, 'F', SKEY(sc->Users[roommailalias])); /* if there is no other recipient, Set the recipient * of the list message to the email address of the diff --git a/citadel/modules/smtp/smtp_clienthandlers.c b/citadel/modules/smtp/smtp_clienthandlers.c index b3de3ae1e..6762016c5 100644 --- a/citadel/modules/smtp/smtp_clienthandlers.c +++ b/citadel/modules/smtp/smtp_clienthandlers.c @@ -157,6 +157,11 @@ eNextState SMTPC_read_EHLO_reply(SmtpOutMsg *Msg) if ((Msg->pCurrRelay == NULL) || (Msg->pCurrRelay->User == NULL)) Msg->State ++; /* Skip auth... */ + if (Msg->pCurrRelay != NULL) + { + if (strstr(ChrPtr(Msg->IO.IOBuf), "LOGIN") != NULL) + Msg->SendLogin = 1; + } } /* else we fall back to 'helo' */ return eSendReply; @@ -184,6 +189,11 @@ eNextState SMTPC_read_HELO_reply(SmtpOutMsg *Msg) else SMTP_VERROR(5); } + if (Msg->pCurrRelay != NULL) + { + if (strstr(ChrPtr(Msg->IO.IOBuf), "LOGIN") != NULL) + Msg->SendLogin = 1; + } if ((Msg->pCurrRelay == NULL) || (Msg->pCurrRelay->User == NULL)) Msg->State ++; /* Skip auth... */ @@ -202,17 +212,44 @@ eNextState SMTPC_send_auth(SmtpOutMsg *Msg) Msg->State ++; /* Skip auth, shouldn't even come here!... */ else { /* Do an AUTH command if necessary */ - sprintf(buf, "%s%c%s%c%s", - Msg->pCurrRelay->User, '\0', - Msg->pCurrRelay->User, '\0', - Msg->pCurrRelay->Pass); - - CtdlEncodeBase64(encoded, buf, - strlen(Msg->pCurrRelay->User) * 2 + - strlen(Msg->pCurrRelay->Pass) + 2, 0); - - StrBufPrintf(Msg->IO.SendBuf.Buf, - "AUTH PLAIN %s\r\n", encoded); + if (Msg->SendLogin) + { + sprintf(buf, "%s", + Msg->pCurrRelay->User); + + CtdlEncodeBase64(encoded, buf, + strlen(Msg->pCurrRelay->User) * 2 + + strlen(Msg->pCurrRelay->Pass) + 2, 0); + + StrBufPrintf(Msg->IO.SendBuf.Buf, + "AUTH LOGIN %s\r\n", + encoded); + sprintf(buf, "%s", + Msg->pCurrRelay->Pass); + + CtdlEncodeBase64(encoded, buf, + strlen(Msg->pCurrRelay->User) * 2 + + strlen(Msg->pCurrRelay->Pass) + 2, 0); + + StrBufAppendPrintf(Msg->IO.SendBuf.Buf, + "%s\r\n", + encoded); + } + else + { + sprintf(buf, "%s%c%s%c%s", + Msg->pCurrRelay->User, '\0', + Msg->pCurrRelay->User, '\0', + Msg->pCurrRelay->Pass); + + CtdlEncodeBase64(encoded, buf, + strlen(Msg->pCurrRelay->User) * 2 + + strlen(Msg->pCurrRelay->Pass) + 2, 0); + + StrBufPrintf(Msg->IO.SendBuf.Buf, + "AUTH PLAIN %s\r\n", + encoded); + } } SMTP_DBG_SEND(); return eReadMessage; diff --git a/citadel/modules/smtp/smtp_clienthandlers.h b/citadel/modules/smtp/smtp_clienthandlers.h index 3cbcb6d4a..64a405d99 100644 --- a/citadel/modules/smtp/smtp_clienthandlers.h +++ b/citadel/modules/smtp/smtp_clienthandlers.h @@ -66,7 +66,7 @@ typedef struct _stmp_out_msg { char node[1024]; char name[1024]; char mailfrom[1024]; - + long SendLogin; long Flags; } SmtpOutMsg; diff --git a/citadel/netconfig.c b/citadel/netconfig.c index a086fea44..1b2e974aa 100644 --- a/citadel/netconfig.c +++ b/citadel/netconfig.c @@ -29,7 +29,7 @@ #include #include "include/ctdl_module.h" - +#include "serv_extensions.h" void vFreeRoomNetworkStruct(void *vOneRoomNetCfg); void FreeRoomNetworkStructContent(OneRoomNetCfg *OneRNCfg); @@ -576,7 +576,6 @@ const ConstStr ForceAliases[nForceAliases] = { {HKEY("postmaster,")}, {HKEY("abuse,")} }; - void cmd_snet(char *argbuf) { struct CitContext *CCC = CC; @@ -726,6 +725,8 @@ void cmd_snet(char *argbuf) ReadRoomNetConfigFile(&RNCfg, filename); Put(RoomConfigs, LKEY(CCC->room.QRnumber), RNCfg, vFreeRoomNetworkStruct); } + + PerformRoomHooks(&CCC->room); } end_critical_section(S_NETCONFIGS); }