diff options
| -rw-r--r-- | qmail-qmqpd.c | 2 | ||||
| -rw-r--r-- | qmail-qmtpd.c | 2 | ||||
| -rw-r--r-- | qmail-smtpd.c | 7 | ||||
| -rw-r--r-- | received.c | 28 | ||||
| -rw-r--r-- | received.h | 10 |
5 files changed, 29 insertions, 20 deletions
diff --git a/qmail-qmqpd.c b/qmail-qmqpd.c index 8726ab0..3eb06e4 100644 --- a/qmail-qmqpd.c +++ b/qmail-qmqpd.c | |||
| @@ -80,7 +80,7 @@ void identify() | |||
| 80 | if (!local) local = env_get("TCPLOCALIP"); | 80 | if (!local) local = env_get("TCPLOCALIP"); |
| 81 | if (!local) local = "unknown"; | 81 | if (!local) local = "unknown"; |
| 82 | 82 | ||
| 83 | received(&qq,"QMQP",local,remoteip,remotehost,remoteinfo,(char *) 0); | 83 | received(&qq,"QMQP",local,remoteip,remotehost,remoteinfo,NULL,NULL); |
| 84 | } | 84 | } |
| 85 | 85 | ||
| 86 | char buf[1000]; | 86 | char buf[1000]; |
diff --git a/qmail-qmtpd.c b/qmail-qmtpd.c index 1055274..77d36aa 100644 --- a/qmail-qmtpd.c +++ b/qmail-qmtpd.c | |||
| @@ -144,7 +144,7 @@ int main() | |||
| 144 | else if (ch == 13) flagdos = 1; | 144 | else if (ch == 13) flagdos = 1; |
| 145 | else badproto(); | 145 | else badproto(); |
| 146 | 146 | ||
| 147 | received(&qq,"QMTP",local,remoteip,remotehost,remoteinfo,(char *) 0); | 147 | received(&qq,"QMTP",local,remoteip,remotehost,remoteinfo,NULL,NULL); |
| 148 | 148 | ||
| 149 | /* XXX: check for loops? only if len is big? */ | 149 | /* XXX: check for loops? only if len is big? */ |
| 150 | 150 | ||
diff --git a/qmail-smtpd.c b/qmail-smtpd.c index 1036eef..20027b0 100644 --- a/qmail-smtpd.c +++ b/qmail-smtpd.c | |||
| @@ -63,6 +63,7 @@ char *remotehost; | |||
| 63 | char *remoteinfo; | 63 | char *remoteinfo; |
| 64 | char *local; | 64 | char *local; |
| 65 | char *relayclient; | 65 | char *relayclient; |
| 66 | static const stralloc *client_get_session_id(); | ||
| 66 | 67 | ||
| 67 | #ifdef TLS | 68 | #ifdef TLS |
| 68 | # include <sys/stat.h> | 69 | # include <sys/stat.h> |
| @@ -346,6 +347,9 @@ void setup() | |||
| 346 | else | 347 | else |
| 347 | #endif | 348 | #endif |
| 348 | dohelo(remotehost); | 349 | dohelo(remotehost); |
| 350 | |||
| 351 | /* generate session */ | ||
| 352 | (void)client_get_session_id(); | ||
| 349 | } | 353 | } |
| 350 | 354 | ||
| 351 | 355 | ||
| @@ -959,7 +963,7 @@ void smtp_data(arg) char *arg; { | |||
| 959 | if (flagauth) | 963 | if (flagauth) |
| 960 | received_authed(&qqt,protocol,local,remoteinfo,client_get_session_id()->s); | 964 | received_authed(&qqt,protocol,local,remoteinfo,client_get_session_id()->s); |
| 961 | else | 965 | else |
| 962 | received(&qqt,protocol,local,remoteip,remotehost,remoteinfo,fakehelo); | 966 | received(&qqt,protocol,local,remoteip,remotehost,remoteinfo,client_get_session_id()->s,fakehelo); |
| 963 | qmail_put(&qqt,sppheaders.s,sppheaders.len); /* set in qmail-spp.c */ | 967 | qmail_put(&qqt,sppheaders.s,sppheaders.len); /* set in qmail-spp.c */ |
| 964 | spp_rset(); | 968 | spp_rset(); |
| 965 | blast(&hops); | 969 | blast(&hops); |
| @@ -1244,7 +1248,6 @@ char *arg; | |||
| 1244 | 1248 | ||
| 1245 | switch (authcmds[i].fun(arg)) { | 1249 | switch (authcmds[i].fun(arg)) { |
| 1246 | case 0: | 1250 | case 0: |
| 1247 | (void)client_get_session_id(); /* generate session */ | ||
| 1248 | if (!spp_auth(authcmds[i].text, user.s)) return; | 1251 | if (!spp_auth(authcmds[i].text, user.s)) return; |
| 1249 | flagauth = 1; | 1252 | flagauth = 1; |
| 1250 | if (ssl) { | 1253 | if (ssl) { |
| @@ -36,15 +36,12 @@ static char buf[DATE822FMT]; | |||
| 36 | 36 | ||
| 37 | /* "Received: from relay1.uu.net (HELO uunet.uu.net) (7@192.48.96.5)\n" */ | 37 | /* "Received: from relay1.uu.net (HELO uunet.uu.net) (7@192.48.96.5)\n" */ |
| 38 | /* " by silverton.berkeley.edu with SMTP; 26 Sep 1995 04:46:54 -0000\n" */ | 38 | /* " by silverton.berkeley.edu with SMTP; 26 Sep 1995 04:46:54 -0000\n" */ |
| 39 | /* "X-UD-Smtp-Session: sessionid */ | ||
| 39 | 40 | ||
| 40 | void received(qqt,protocol,local,remoteip,remotehost,remoteinfo,helo) | 41 | void received(const struct qmail *qqt, |
| 41 | struct qmail *qqt; | 42 | const char *protocol, const char *local, |
| 42 | char *protocol; | 43 | const char *remoteip, const char *remotehost, const char *remoteinfo, |
| 43 | char *local; | 44 | const char *remotesession, const char *helo) |
| 44 | char *remoteip; | ||
| 45 | char *remotehost; | ||
| 46 | char *remoteinfo; | ||
| 47 | char *helo; | ||
| 48 | { | 45 | { |
| 49 | struct datetime dt; | 46 | struct datetime dt; |
| 50 | 47 | ||
| @@ -68,17 +65,19 @@ char *helo; | |||
| 68 | qmail_puts(qqt,"; "); | 65 | qmail_puts(qqt,"; "); |
| 69 | datetime_tai(&dt,now()); | 66 | datetime_tai(&dt,now()); |
| 70 | qmail_put(qqt,buf,date822fmt(buf,&dt)); | 67 | qmail_put(qqt,buf,date822fmt(buf,&dt)); |
| 68 | |||
| 69 | if (remotesession) { | ||
| 70 | qmail_puts(qqt,"X-UD-Smtp-Session: "); | ||
| 71 | qmail_puts(qqt,remotesession); | ||
| 72 | qmail_put(qqt,"\n",1); | ||
| 73 | } | ||
| 71 | } | 74 | } |
| 72 | 75 | ||
| 73 | /* "Received: by silverton.berkeley.edu with SMTP; 26 Sep 1995 04:46:54 -0000\n" | 76 | /* "Received: by silverton.berkeley.edu with SMTP; 26 Sep 1995 04:46:54 -0000\n" |
| 74 | * "X-UD-Smtp-Session: user@sessionid */ | 77 | * "X-UD-Smtp-Session: user@sessionid */ |
| 75 | 78 | ||
| 76 | void received_authed(qqt,protocol,local,remoteinfo,remotesession) | 79 | void received_authed(const struct qmail *qqt, const char *protocol, |
| 77 | struct qmail *qqt; | 80 | const char *local, const char *remoteinfo, const char *remotesession) |
| 78 | char *protocol; | ||
| 79 | char *local; | ||
| 80 | char *remoteinfo; | ||
| 81 | char *remotesession; | ||
| 82 | { | 81 | { |
| 83 | struct datetime dt; | 82 | struct datetime dt; |
| 84 | 83 | ||
| @@ -89,6 +88,7 @@ char *remotesession; | |||
| 89 | qmail_puts(qqt,"; "); | 88 | qmail_puts(qqt,"; "); |
| 90 | datetime_tai(&dt,now()); | 89 | datetime_tai(&dt,now()); |
| 91 | qmail_put(qqt,buf,date822fmt(buf,&dt)); | 90 | qmail_put(qqt,buf,date822fmt(buf,&dt)); |
| 91 | |||
| 92 | if (remoteinfo || remotesession) { | 92 | if (remoteinfo || remotesession) { |
| 93 | qmail_puts(qqt,"X-UD-Smtp-Session: "); | 93 | qmail_puts(qqt,"X-UD-Smtp-Session: "); |
| 94 | if (remoteinfo) { | 94 | if (remoteinfo) { |
| @@ -1,7 +1,13 @@ | |||
| 1 | #ifndef RECEIVED_H | 1 | #ifndef RECEIVED_H |
| 2 | #define RECEIVED_H | 2 | #define RECEIVED_H |
| 3 | 3 | ||
| 4 | extern void received(); | 4 | #include "qmail.h" |
| 5 | extern void received_authed(); | 5 | |
| 6 | void received(const struct qmail *qqt, const char *protocol, | ||
| 7 | const char *local, const char *remoteip, const char *remotehost, | ||
| 8 | const char *remoteinfo, const char *remotesession, const char *helo | ||
| 9 | ); | ||
| 10 | void received_authed(const struct qmail *qqt, const char *protocol, | ||
| 11 | const char *local, const char *remoteinfo, const char *remotesession); | ||
| 6 | 12 | ||
| 7 | #endif | 13 | #endif |
