]> code.citadel.org Git - citadel.git/blobdiff - citadel/serv_smtp.c
centralized filename calculation
[citadel.git] / citadel / serv_smtp.c
index d460ba611e90729131a253bceca90ea9c7b7c7a4..b16d7804f4ce67c7eb5c712ea5cfba63789410e5 100644 (file)
@@ -31,6 +31,7 @@
 #include <pwd.h>
 #include <errno.h>
 #include <sys/types.h>
+#include <syslog.h>
 
 #if TIME_WITH_SYS_TIME
 # include <sys/time.h>
@@ -69,6 +70,7 @@
 #include "domain.h"
 #include "clientsocket.h"
 #include "locate_host.h"
+#include "citadel_dirs.h"
 
 #ifdef HAVE_OPENSSL
 #include "serv_crypto.h"
@@ -667,7 +669,7 @@ void smtp_rcpt(char *argbuf) {
 void smtp_data(void) {
        char *body;
        struct CtdlMessage *msg;
-       long msgnum;
+       long msgnum = (-1L);
        char nowstamp[SIZ];
        struct recptypes *valid;
        int scan_errors;
@@ -780,6 +782,22 @@ void smtp_data(void) {
                cprintf("%s", result);
        }
 
+       /* Write something to the syslog (which may or may not be where the
+        * rest of the Citadel logs are going; some sysadmins want LOG_MAIL).
+        */
+       if (enable_syslog) {
+               syslog((LOG_MAIL | LOG_INFO),
+                       "%ld: from=<%s>, nrcpts=%d, relay=%s [%s], stat=%s",
+                       msgnum,
+                       SMTP->from,
+                       SMTP->number_of_recipients,
+                       CC->cs_host,
+                       CC->cs_addr,
+                       result
+               );
+       }
+
+       /* Clean up */
        CtdlFreeMessage(msg);
        free(valid);
        smtp_data_clear();      /* clear out the buffers now */
@@ -1179,6 +1197,20 @@ void smtp_try(const char *key, const char *addr, int *status,
 
 bail:  free(msgtext);
        sock_close(sock);
+
+       /* Write something to the syslog (which may or may not be where the
+        * rest of the Citadel logs are going; some sysadmins want LOG_MAIL).
+        */
+       if (enable_syslog) {
+               syslog((LOG_MAIL | LOG_INFO),
+                       "%ld: to=<%s>, relay=%s, stat=%s",
+                       msgnum,
+                       addr,
+                       mx_host,
+                       dsn
+               );
+       }
+
        return;
 }
 
@@ -1692,6 +1724,7 @@ void smtp_cleanup_function(void) {
 
 char *serv_smtp_init(void)
 {
+
        CtdlRegisterServiceHook(config.c_smtp_port,     /* SMTP MTA */
                                NULL,
                                smtp_greeting,
@@ -1713,23 +1746,13 @@ char *serv_smtp_init(void)
                                NULL);
 
        CtdlRegisterServiceHook(0,                      /* local LMTP */
-#ifndef HAVE_RUN_DIR
-                                                       "."
-#else
-                                                       RUN_DIR
-#endif
-                                                       "/lmtp.socket",
+                                                       file_lmtp_socket,
                                                        lmtp_greeting,
                                                        smtp_command_loop,
                                                        NULL);
 
        CtdlRegisterServiceHook(0,                      /* local LMTP */
-#ifndef HAVE_RUN_DIR
-                                                       "."
-#else
-                                                       RUN_DIR
-#endif
-                                                       "/lmtp-unfiltered.socket",
+                                                       file_lmtp_unfiltered_socket,
                                                        lmtp_unfiltered_greeting,
                                                        smtp_command_loop,
                                                        NULL);