X-Git-Url: https://code.citadel.org/?p=citadel.git;a=blobdiff_plain;f=citadel%2Fmodules%2Fsmtp%2Fserv_smtp.c;h=549a291658758fd6e23347171319ac3b29f14df8;hp=a74e2bb9fa7fc0fdf9927a937afd42d484ac520d;hb=281661c01e4a7562c9579a950036f82dbc7c04d4;hpb=0f36c303808d7c3713db27c2fa9e2fd4f9c3eb6a diff --git a/citadel/modules/smtp/serv_smtp.c b/citadel/modules/smtp/serv_smtp.c index a74e2bb9f..549a29165 100644 --- a/citadel/modules/smtp/serv_smtp.c +++ b/citadel/modules/smtp/serv_smtp.c @@ -715,6 +715,16 @@ void smtp_rcpt(void) { return; } + if ( + (valid->num_room > 0) // If it's mail to a room (mailing list)... + && (SMTP->message_originated_locally == 0) // ...and also inbound Internet mail... + && (is_email_subscribed_to_list((char *)ChrPtr(SMTP->from), valid->recp_room) == 0) // ...and not a subscriber + ) { + cprintf("551 <%s> - This mailing list only accepts messages from subscribers.\r\n", ChrPtr(SMTP->OneRcpt)); + free_recipients(valid); + return; + } + cprintf("250 RCPT ok <%s>\r\n", ChrPtr(SMTP->OneRcpt)); if (StrLength(SMTP->recipients) > 0) { StrBufAppendBufPlain(SMTP->recipients, HKEY(","), 0);