From 2fb16f5983aaf0300ca09732a2bd3a2208f57d3c Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Fri, 25 Jan 2002 04:59:51 +0000 Subject: [PATCH] * Fixed acceptance of inbound SMTP messages relaying to other Citadel nodes --- citadel/internet_addressing.c | 3 ++- citadel/serv_smtp.c | 21 +++++++++------------ 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/citadel/internet_addressing.c b/citadel/internet_addressing.c index f83631946..a263bf42c 100644 --- a/citadel/internet_addressing.c +++ b/citadel/internet_addressing.c @@ -374,8 +374,9 @@ REALIAS: strcpy(destuser, user); strcpy(desthost, node); - if (hostalias == hostalias_gatewaydomain) + if (hostalias == hostalias_gatewaydomain) { return(rfc822_address_on_citadel_network); + } return(rfc822_address_nonlocal); } diff --git a/citadel/serv_smtp.c b/citadel/serv_smtp.c index a74b8cb5a..766fb98ab 100644 --- a/citadel/serv_smtp.c +++ b/citadel/serv_smtp.c @@ -398,10 +398,10 @@ void smtp_mail(char *argbuf) { */ void smtp_rcpt(char *argbuf) { int cvt; + int alias_type = 0; char user[SIZ]; char node[SIZ]; char recp[SIZ]; - int bypass_spam_checking = 0; if (strlen(SMTP->from) == 0) { cprintf("503 Need MAIL before RCPT\r\n"); @@ -417,13 +417,11 @@ void smtp_rcpt(char *argbuf) { striplt(recp); stripallbut(recp, '<', '>'); - /* Allow relaying if it's from the Internet to another Citadel node - * for whom we are providing directory service. - */ - bypass_spam_checking = IsDirectory(recp); - - alias(recp); + alias_type = alias(recp); cvt = convert_internet_address(user, node, recp); + if (alias_type == MES_IGNET) { + cvt = rfc822_address_on_citadel_network; + } snprintf(recp, sizeof recp, "%s@%s", user, node); lprintf(9, "cvt=%d, citaddr=<%s@%s>\n", cvt, user, node); @@ -450,7 +448,7 @@ void smtp_rcpt(char *argbuf) { return; case rfc822_address_on_citadel_network: - cprintf("250 RCPT ok ignet\r\n"); + cprintf("250 RCPT ok ignet <%s>\r\n", recp); if (SMTP->valid.num_ignet > 0) { strcat(SMTP->valid.recp_ignet, "|"); } @@ -464,12 +462,11 @@ void smtp_rcpt(char *argbuf) { return; case rfc822_address_nonlocal: - if ( (SMTP->message_originated_locally == 0) - && (bypass_spam_checking == 0) ) { - cprintf("551 Relaying denied.\r\n"); + if (SMTP->message_originated_locally == 0) { + cprintf("551 Relaying denied <%s>\r\n", recp); } else { - cprintf("250 RCPT ok relay <%s>\r\n", recp); + cprintf("250 RCPT ok <%s>\r\n", recp); if (SMTP->valid.num_internet > 0) { strcat(SMTP->valid.recp_internet, "|"); -- 2.39.2