]> code.citadel.org Git - citadel.git/blobdiff - citadel/modules/smtp/serv_smtp.c
* honor the openssl configure define, so we don't die if we don't have it.
[citadel.git] / citadel / modules / smtp / serv_smtp.c
index 304344694bdc16b4e96604453f4993d12293f821..ac60e79d7311cfaa73eea5233bfe67ced6c47a66 100644 (file)
@@ -166,6 +166,9 @@ void smtp_greeting(int is_msa)
  */
 void smtps_greeting(void) {
        CtdlModuleStartCryptoMsgs(NULL, NULL, NULL);
+#ifdef HAVE_OPENSSL
+       if (!CC->redirect_ssl) CC->kill_me = 1;         /* kill session if no crypto */
+#endif
        smtp_greeting(0);
 }
 
@@ -672,7 +675,7 @@ void smtp_data(void) {
                        config.c_fqdn,
                        nowstamp);
        
-       body = CtdlReadMessageBody(".", config.c_maxmsglen, body, 1);
+       body = CtdlReadMessageBody(".", config.c_maxmsglen, body, 1, 0);
        if (body == NULL) {
                cprintf("550 5.6.5 "
                        "Unable to save message: internal error.\r\n");
@@ -958,7 +961,7 @@ void smtp_try(const char *key, const char *addr, int *status,
                if (!strncasecmp(buf, "From:", 5)) {
                        safestrncpy(mailfrom, &buf[5], sizeof mailfrom);
                        striplt(mailfrom);
-                       for (i=0; i<strlen(mailfrom); ++i) {
+                       for (i=0; mailfrom[i]; ++i) {
                                if (!isprint(mailfrom[i])) {
                                        strcpy(&mailfrom[i], &mailfrom[i+1]);
                                        i=0;
@@ -968,7 +971,7 @@ void smtp_try(const char *key, const char *addr, int *status,
                        /* Strip out parenthesized names */
                        lp = (-1);
                        rp = (-1);
-                       for (i=0; i<strlen(mailfrom); ++i) {
+                       for (i=0; mailfrom[i]; ++i) {
                                if (mailfrom[i] == '(') lp = i;
                                if (mailfrom[i] == ')') rp = i;
                        }
@@ -979,7 +982,7 @@ void smtp_try(const char *key, const char *addr, int *status,
                        /* Prefer brokketized names */
                        lp = (-1);
                        rp = (-1);
-                       for (i=0; i<strlen(mailfrom); ++i) {
+                       for (i=0; mailfrom[i]; ++i) {
                                if (mailfrom[i] == '<') lp = i;
                                if (mailfrom[i] == '>') rp = i;
                        }
@@ -1803,7 +1806,11 @@ void smtp_cleanup_function(void) {
 
 
 
-
+const char *CitadelServiceSMTP_MTA="SMTP-MTA";
+const char *CitadelServiceSMTPS_MTA="SMTPs-MTA";
+const char *CitadelServiceSMTP_MSA="SMTP-MSA";
+const char *CitadelServiceSMTP_LMTP="LMTP";
+const char *CitadelServiceSMTP_LMTP_UNF="LMTP-UnF";
 
 CTDL_MODULE_INIT(smtp)
 {
@@ -1811,33 +1818,38 @@ CTDL_MODULE_INIT(smtp)
                                NULL,
                                smtp_mta_greeting,
                                smtp_command_loop,
-                               NULL);
+                               NULL, 
+                               CitadelServiceSMTP_MTA);
 
 #ifdef HAVE_OPENSSL
        CtdlRegisterServiceHook(config.c_smtps_port,
                                NULL,
                                smtps_greeting,
                                smtp_command_loop,
-                               NULL);
+                               NULL,
+                               CitadelServiceSMTPS_MTA);
 #endif
 
        CtdlRegisterServiceHook(config.c_msa_port,      /* SMTP MSA */
                                NULL,
                                smtp_msa_greeting,
                                smtp_command_loop,
-                               NULL);
+                               NULL,
+                               CitadelServiceSMTP_MSA);
 
        CtdlRegisterServiceHook(0,                      /* local LMTP */
                                file_lmtp_socket,
                                lmtp_greeting,
                                smtp_command_loop,
-                               NULL);
+                               NULL,
+                               CitadelServiceSMTP_LMTP);
 
        CtdlRegisterServiceHook(0,                      /* local LMTP */
                                file_lmtp_unfiltered_socket,
                                lmtp_unfiltered_greeting,
                                smtp_command_loop,
-                               NULL);
+                               NULL,
+                               CitadelServiceSMTP_LMTP_UNF);
 
        smtp_init_spoolout();
        CtdlRegisterSessionHook(smtp_do_queue, EVT_TIMER);