* allow LMTP posting to all rooms.
authorWilfried Göesgens <willi@citadel.org>
Mon, 11 Feb 2008 21:33:35 +0000 (21:33 +0000)
committerWilfried Göesgens <willi@citadel.org>
Mon, 11 Feb 2008 21:33:35 +0000 (21:33 +0000)
citadel/modules/smtp/serv_smtp.c
citadel/msgbase.c
citadel/msgbase.h

index cd858ba10fee0b289f037b8d45e6b9d408635da2..a79bd0df4383ee5e227aacfdc65af9b05cdbc672 100644 (file)
@@ -593,7 +593,9 @@ void smtp_rcpt(char *argbuf) {
 
        valid = validate_recipients(recp, 
                                    smtp_get_Recipients (),
-                                   (CC->logged_in)? POST_LOGGED_IN:POST_EXTERNAL);
+                                   (SMTP->is_lmtp)? POST_LMTP:
+                                      (CC->logged_in)? POST_LOGGED_IN:
+                                                       POST_EXTERNAL);
        if (valid->num_error != 0) {
                cprintf("550 %s\r\n", valid->errormsg);
                free_recipients(valid);
@@ -717,7 +719,9 @@ void smtp_data(void) {
        /* Submit the message into the Citadel system. */
        valid = validate_recipients(SMTP->recipients, 
                                    smtp_get_Recipients (),
-                                   (CC->logged_in)? POST_LOGGED_IN:POST_EXTERNAL);
+                                   (SMTP->is_lmtp)? POST_LMTP:
+                                      (CC->logged_in)? POST_LOGGED_IN:
+                                                       POST_EXTERNAL);
 
        /* If there are modules that want to scan this message before final
         * submission (such as virus checkers or spam filters), call them now
index a76a242741dbc23478da1d90fa6a1e2e7ff9c165..75f8d436618f8b71a687b8f5b430f65ed8d425a6 100644 (file)
@@ -3106,6 +3106,7 @@ int CtdlDoIHavePermissionToPostInThisRoom(char *errmsgbuf,
                return (0); // We're Evaling whether a recipient exists
        }
        else if (!(CC->logged_in)) {
+               
                if ((CC->room.QRflags & QR_READONLY)) {
                        snprintf(errmsgbuf, n, "Not logged in.");
                        return (ERROR + NOT_LOGGED_IN);
@@ -3114,7 +3115,7 @@ int CtdlDoIHavePermissionToPostInThisRoom(char *errmsgbuf,
                        snprintf(errmsgbuf, n, "Not logged in Moderation feature not yet implemented!");
                        return (ERROR + NOT_LOGGED_IN);
                }
-               if ((CC->room.QRflags2 & QR2_SMTP_PUBLIC) == 0) {
+               if ((PostPublic!=POST_LMTP) &&(CC->room.QRflags2 & QR2_SMTP_PUBLIC) == 0) {
                        SpoolControl *sc;
                        char filename[SIZ];
                        int found;
index 685f8bb113d65462caad0e89f328758b09794eec..731f1bcd0f7cbe1ddba261137f15363b07ddb85a 100644 (file)
@@ -152,7 +152,8 @@ int CtdlDoIHavePermissionToDeleteMessagesFromThisRoom(void);
 enum {
        POST_LOGGED_IN,
        POST_EXTERNAL,
-       CHECK_EXISTANCE
+       CHECK_EXISTANCE,
+       POST_LMTP
 };
 int CtdlDoIHavePermissionToPostInThisRoom(char *errmsgbuf, 
                                          size_t n,