|  | s/qmail 4.3.23
    Next generation secure email transport | 
requires sslserver or tcpserver More...
#include <unistd.h>#include "wildmat.h"#include "buffer.h"#include "stralloc.h"#include "genalloc.h"#include "alloc.h"#include "qmail.h"#include "auto_qmail.h"#include "control.h"#include "received.h"#include "constmap.h"#include "logmsg.h"#include "ipme.h"#include "fd.h"#include "ip.h"#include "str.h"#include "fmt.h"#include "scan.h"#include "byte.h"#include "case.h"#include "env.h"#include "now.h"#include "exit.h"#include "rcpthosts.h"#include "recipients.h"#include "mfrules.h"#include "tls_start.h"#include "smtpdlog.h"#include "timeout.h"#include "commands.h"#include "cdbread.h"#include "dns.h"#include "wait.h"#include "sig.h"#include "close.h"#include "open.h"#include "base64.h"#include "spf.h"
Go to the source code of this file.
| Data Structures | |
| struct | authcmd | 
| Macros | |
| #define | PAM111421 | 
| #define | AUTHSLEEP 5 | 
| #define | PORT_SMTPS "465" | 
| #define | SMTP_TIMEOUT 1200 | 
| #define | MIMETYPE_LEN 9 | 
| #define | LOADER_LEN 5 | 
| #define | BASE64MESSAGE "content-transfer-encoding: base64" | 
| #define | FDIN 0 | 
| #define | FDOUT 1 | 
| #define | FDLOG 2 | 
| #define | FDAUTH 3 | 
| #define | MAXHOPS 100 | 
| Functions | |
| int | modssl_info () | 
| ssize_t | safewrite (int fd, char *buf, size_t len) | 
| ssize_t | saferead (int fd, char *buf, size_t len) | 
| void | flush () | 
| void | out (char *s) | 
| int | bhelocheck (void) | 
| int | dnsq (char *arg, char type) | 
| void | smtp_greet (char *code) | 
| void | smtp_help (char *d) | 
| void | smtp_quit (char *d) | 
| void | dohelo (char *helo) | 
| void | setup () | 
| void | auth_info (char *method) | 
| int | addrparse (char *arg) | 
| int | bmfcheck () | 
| int | brtcheck () | 
| int | addrallowed (char *arg) | 
| int | rcptallowed () | 
| int | localaddr (char *mf) | 
| int | spf_check (int flag6) | 
| int | mailfrom_size (char *arg) | 
| void | mailfrom_auth (char *arg, int len) | 
| void | mailfrom_parms (char *arg) | 
| int | postgrey_scanner () | 
| void | smtp_noop (char *d) | 
| void | smtp_vrfy (char *d) | 
| void | smtp_helo (char *arg) | 
| void | smtp_ehlo (char *arg) | 
| void | smtp_rset (char *d) | 
| void | smtp_starttls (char *d) | 
| void | smtp_mail (char *arg) | 
| void | smtp_rcpt (char *arg) | 
| void | blast (int *hops) | 
| void | acceptmessage (unsigned long qp) | 
| void | smtp_data (char *d) | 
| int | authgetl (void) | 
| int | authenticate (void) | 
| int | auth_login (char *arg) | 
| int | auth_plain (char *arg) | 
| int | auth_cram (char *d) | 
| void | smtp_auth (char *arg) | 
| int | main (int argc, char *const *argv) | 
| Variables | |
| unsigned long | databytes = 0 | 
| unsigned long | timeout = SMTP_TIMEOUT | 
| char | inbuf [BUFSIZE_MESS] | 
| buffer | bi = BUFFER_INIT(saferead,FDIN,inbuf,sizeof(inbuf)) | 
| char | outbuf [BUFSIZE_LINE] | 
| buffer | bo = BUFFER_INIT(safewrite,FDOUT,outbuf,sizeof(outbuf)) | 
| char | buflog [BUFSIZE_LOG] | 
| buffer | bl = BUFFER_INIT(buffer_unixwrite,FDLOG,buflog,sizeof(buflog)) | 
| stralloc | sa = {0} | 
| ipalloc | ia = {0} | 
| char * | remoteip | 
| char * | remotehost | 
| char * | remoteinfo | 
| char * | local | 
| char * | localport | 
| char * | relayclient | 
| int | flagutf8 = 0 | 
| int | flaglf = 0 | 
| stralloc | protocol = {0} | 
| stralloc | helohost = {0} | 
| char * | fakehelo | 
| stralloc | tlsinfo = {0} | 
| char * | helocheck | 
| int | flagbadhelo | 
| int | flagdnshelo | 
| int | seenhelo = 0 | 
| char * | badmailcond | 
| char * | badhelocond | 
| int | liphostok = 0 | 
| stralloc | liphost = {0} | 
| int | bmfok = 0 | 
| stralloc | bmf = {0} | 
| struct constmap | mapbmf | 
| int | brtok = 0 | 
| stralloc | brt = {0} | 
| struct constmap | mapbrt | 
| int | badhelook = 0 | 
| stralloc | badhelo = {0} | 
| struct constmap | mapbhlo | 
| int | flagmimetype = 0 | 
| char * | badmimeinit | 
| int | flagloadertype = 0 | 
| char * | badloaderinit | 
| int | flagmav = 0 | 
| int | localmf = 0 | 
| char * | localmfcheck | 
| char * | mfdnscheck | 
| char * | qhpsi | 
| char * | base64 | 
| int | maxrcptcount = 0 | 
| int | flagerrcpts = 0 | 
| int | flagnotorious = 0 | 
| int | tarpitcount = 0 | 
| int | tarpitdelay = 0 | 
| int | greylist = 0 | 
| stralloc | pgbind = {0} | 
| char * | auth | 
| int | smtpauth = 0 | 
| int | seenauth = 0 | 
| stralloc | authmethod = {0} | 
| int | starttls = 0 | 
| int | seentls = 0 | 
| char * | ucspitls = 0 | 
| char * | tlsversion | 
| char * | cipher | 
| char * | cipherperm | 
| char * | cipherused | 
| char * | clientdn = 0 | 
| char * | clientcn = 0 | 
| char * | dnemail | 
| stralloc | mailto = {0} | 
| stralloc | deliverto = {0} | 
| char * | delivermailto | 
| stralloc | rblinfo = {0} | 
| char * | rblsmtpd | 
| int | flagspf = 0 | 
| stralloc | addr = {0} | 
| stralloc | eddr = {0} | 
| stralloc | rddr = {0} | 
| stralloc | mailfrom = {0} | 
| stralloc | rcptto = {0} | 
| stralloc | user = {0} | 
| stralloc | fuser = {0} | 
| stralloc | mfparms = {0} | 
| int | seenmail = 0 | 
| int | flagaddr | 
| int | flagrcpt | 
| int | flagdnsmf = 0 | 
| int | flagsize | 
| int | rcptcount = 0 | 
| struct qmail | qqt | 
| unsigned long | bytestooverflow = 0 | 
| stralloc | line = {0} | 
| stralloc | base64types = {0} | 
| stralloc | badmimetype = {0} | 
| stralloc | badloadertype = {0} | 
| unsigned int | nolines = 0 | 
| unsigned int | flagb64 = 0 | 
| unsigned int | flagbase = 0 | 
| unsigned int | flagblank = 0 | 
| char | accept_buf [FMT_ULONG] | 
| char | unique [FMT_ULONG+FMT_ULONG+3] | 
| char ** | childargs | 
| char | authbuf [BUFSIZE_AUTH] | 
| buffer | ba = BUFFER_INIT(safewrite,FDAUTH,authbuf,sizeof(authbuf)) | 
| struct authcmd | authcmds [] | 
| struct commands | smtpcommands [] | 
requires sslserver or tcpserver
-- authenticating ESMTP/ESMTPS server
Definition in file qmail-smtpd.c.
| #define AUTHSLEEP 5 | 
Definition at line 46 of file qmail-smtpd.c.
| #define BASE64MESSAGE "content-transfer-encoding: base64" | 
Definition at line 52 of file qmail-smtpd.c.
| #define FDAUTH 3 | 
Definition at line 56 of file qmail-smtpd.c.
| #define FDIN 0 | 
Definition at line 53 of file qmail-smtpd.c.
| #define FDLOG 2 | 
Definition at line 55 of file qmail-smtpd.c.
| #define FDOUT 1 | 
Definition at line 54 of file qmail-smtpd.c.
| #define LOADER_LEN 5 | 
Definition at line 51 of file qmail-smtpd.c.
| #define MAXHOPS 100 | 
Definition at line 58 of file qmail-smtpd.c.
| #define MIMETYPE_LEN 9 | 
Definition at line 50 of file qmail-smtpd.c.
| #define PAM111421 | 
Definition at line 45 of file qmail-smtpd.c.
| #define PORT_SMTPS "465" | 
Definition at line 47 of file qmail-smtpd.c.
| #define SMTP_TIMEOUT 1200 | 
Definition at line 48 of file qmail-smtpd.c.
| void acceptmessage | ( | unsigned long | qp | ) | 
Definition at line 1370 of file qmail-smtpd.c.


| int addrallowed | ( | char * | arg | ) | 
Definition at line 764 of file qmail-smtpd.c.


| int addrparse | ( | char * | arg | ) | 
Definition at line 545 of file qmail-smtpd.c.


| int auth_cram | ( | char * | d | ) | 
| void auth_info | ( | char * | method | ) | 
Definition at line 469 of file qmail-smtpd.c.


| int auth_login | ( | char * | arg | ) | 
| int auth_plain | ( | char * | arg | ) | 
| int authenticate | ( | void | ) | 
Definition at line 1476 of file qmail-smtpd.c.


| int authgetl | ( | void | ) | 
Definition at line 1456 of file qmail-smtpd.c.


| int bhelocheck | ( | void | ) | 
Definition at line 610 of file qmail-smtpd.c.


| void blast | ( | int * | hops | ) | 
| int bmfcheck | ( | ) | 
Definition at line 638 of file qmail-smtpd.c.


| int brtcheck | ( | ) | 
Definition at line 727 of file qmail-smtpd.c.


| int dnsq | ( | char * | arg, | 
| char | type ) | 
Definition at line 101 of file qmail-smtpd.c.


| void dohelo | ( | char * | helo | ) | 
Definition at line 176 of file qmail-smtpd.c.


| void flush | ( | void | ) | 
| int localaddr | ( | char * | mf | ) | 
Definition at line 785 of file qmail-smtpd.c.


| void mailfrom_auth | ( | char * | arg, | 
| int | len ) | 
Definition at line 878 of file qmail-smtpd.c.


| void mailfrom_parms | ( | char * | arg | ) | 
Definition at line 911 of file qmail-smtpd.c.


| int mailfrom_size | ( | char * | arg | ) | 
| int modssl_info | ( | ) | 
Definition at line 481 of file qmail-smtpd.c.


| void out | ( | char * | s | ) | 
Definition at line 92 of file qmail-smtpd.c.
| int postgrey_scanner | ( | ) | 
Definition at line 933 of file qmail-smtpd.c.


| int rcptallowed | ( | ) | 
Definition at line 772 of file qmail-smtpd.c.


| ssize_t saferead | ( | int | fd, | 
| char * | buf, | ||
| size_t | len ) | 
| ssize_t safewrite | ( | int | fd, | 
| char * | buf, | ||
| size_t | len ) | 
| void setup | ( | ) | 
Definition at line 277 of file qmail-smtpd.c.


| void smtp_auth | ( | char * | arg | ) | 
| void smtp_data | ( | char * | d | ) | 
| void smtp_ehlo | ( | char * | arg | ) | 
| void smtp_greet | ( | char * | code | ) | 
| void smtp_helo | ( | char * | arg | ) | 
| void smtp_help | ( | char * | d | ) | 
Definition at line 145 of file qmail-smtpd.c.
| void smtp_mail | ( | char * | arg | ) | 
| void smtp_noop | ( | char * | d | ) | 
Definition at line 959 of file qmail-smtpd.c.
| void smtp_quit | ( | char * | d | ) | 
| void smtp_rcpt | ( | char * | arg | ) | 
| void smtp_rset | ( | char * | d | ) | 
| void smtp_starttls | ( | char * | d | ) | 
| void smtp_vrfy | ( | char * | d | ) | 
Definition at line 960 of file qmail-smtpd.c.
Definition at line 814 of file qmail-smtpd.c.


| char accept_buf[FMT_ULONG] | 
Definition at line 1368 of file qmail-smtpd.c.
| stralloc addr = {0} | 
Definition at line 529 of file qmail-smtpd.c.
| char* auth | 
Definition at line 252 of file qmail-smtpd.c.
| char authbuf[BUFSIZE_AUTH] | 
Definition at line 1453 of file qmail-smtpd.c.
| struct authcmd authcmds[] | 
| stralloc authmethod = {0} | 
Definition at line 255 of file qmail-smtpd.c.
Definition at line 1454 of file qmail-smtpd.c.
| stralloc badhelo = {0} | 
Definition at line 219 of file qmail-smtpd.c.
| char* badhelocond | 
Definition at line 174 of file qmail-smtpd.c.
| int badhelook = 0 | 
Definition at line 218 of file qmail-smtpd.c.
| char* badloaderinit | 
Definition at line 231 of file qmail-smtpd.c.
| stralloc badloadertype = {0} | 
Definition at line 1222 of file qmail-smtpd.c.
| char* badmailcond | 
Definition at line 173 of file qmail-smtpd.c.
| char* badmimeinit | 
Definition at line 227 of file qmail-smtpd.c.
| stralloc badmimetype = {0} | 
Definition at line 1221 of file qmail-smtpd.c.
| char* base64 | 
Definition at line 240 of file qmail-smtpd.c.
| stralloc base64types = {0} | 
Definition at line 1220 of file qmail-smtpd.c.
Definition at line 83 of file qmail-smtpd.c.
Definition at line 89 of file qmail-smtpd.c.
| stralloc bmf = {0} | 
Definition at line 211 of file qmail-smtpd.c.
| int bmfok = 0 | 
Definition at line 210 of file qmail-smtpd.c.
Definition at line 86 of file qmail-smtpd.c.
| stralloc brt = {0} | 
Definition at line 215 of file qmail-smtpd.c.
| int brtok = 0 | 
Definition at line 214 of file qmail-smtpd.c.
| char buflog[BUFSIZE_LOG] | 
Definition at line 88 of file qmail-smtpd.c.
| unsigned long bytestooverflow = 0 | 
Definition at line 1217 of file qmail-smtpd.c.
| char** childargs | 
Definition at line 1452 of file qmail-smtpd.c.
| char* cipher | 
Definition at line 261 of file qmail-smtpd.c.
| char* cipherperm | 
Definition at line 262 of file qmail-smtpd.c.
| char* cipherused | 
Definition at line 263 of file qmail-smtpd.c.
| char* clientcn = 0 | 
Definition at line 265 of file qmail-smtpd.c.
| char* clientdn = 0 | 
Definition at line 264 of file qmail-smtpd.c.
| unsigned long databytes = 0 | 
Definition at line 59 of file qmail-smtpd.c.
| char* delivermailto | 
Definition at line 270 of file qmail-smtpd.c.
| stralloc deliverto = {0} | 
Definition at line 269 of file qmail-smtpd.c.
| char* dnemail | 
Definition at line 266 of file qmail-smtpd.c.
| stralloc eddr = {0} | 
Definition at line 530 of file qmail-smtpd.c.
| char* fakehelo | 
Definition at line 165 of file qmail-smtpd.c.
| int flagaddr | 
Definition at line 539 of file qmail-smtpd.c.
| unsigned int flagb64 = 0 | 
Definition at line 1225 of file qmail-smtpd.c.
| int flagbadhelo | 
Definition at line 169 of file qmail-smtpd.c.
| unsigned int flagbase = 0 | 
Definition at line 1226 of file qmail-smtpd.c.
| unsigned int flagblank = 0 | 
Definition at line 1227 of file qmail-smtpd.c.
| int flagdnshelo | 
Definition at line 170 of file qmail-smtpd.c.
| int flagdnsmf = 0 | 
Definition at line 541 of file qmail-smtpd.c.
| int flagerrcpts = 0 | 
Definition at line 243 of file qmail-smtpd.c.
| int flaglf = 0 | 
Definition at line 161 of file qmail-smtpd.c.
| int flagloadertype = 0 | 
Definition at line 230 of file qmail-smtpd.c.
| int flagmav = 0 | 
Definition at line 234 of file qmail-smtpd.c.
| int flagmimetype = 0 | 
Definition at line 226 of file qmail-smtpd.c.
| int flagnotorious = 0 | 
Definition at line 244 of file qmail-smtpd.c.
| int flagrcpt | 
Definition at line 540 of file qmail-smtpd.c.
| int flagsize | 
Definition at line 542 of file qmail-smtpd.c.
| int flagspf = 0 | 
Definition at line 274 of file qmail-smtpd.c.
| int flagutf8 = 0 | 
Definition at line 160 of file qmail-smtpd.c.
| stralloc fuser = {0} | 
Definition at line 535 of file qmail-smtpd.c.
| int greylist = 0 | 
Definition at line 249 of file qmail-smtpd.c.
| char* helocheck | 
Definition at line 168 of file qmail-smtpd.c.
| stralloc helohost = {0} | 
Definition at line 164 of file qmail-smtpd.c.
| ipalloc ia = {0} | 
Definition at line 95 of file qmail-smtpd.c.
| char inbuf[BUFSIZE_MESS] | 
Definition at line 82 of file qmail-smtpd.c.
| stralloc line = {0} | 
Definition at line 1219 of file qmail-smtpd.c.
| stralloc liphost = {0} | 
Definition at line 208 of file qmail-smtpd.c.
| int liphostok = 0 | 
Definition at line 207 of file qmail-smtpd.c.
| char* local | 
Definition at line 157 of file qmail-smtpd.c.
| int localmf = 0 | 
Definition at line 235 of file qmail-smtpd.c.
| char* localmfcheck | 
Definition at line 236 of file qmail-smtpd.c.
| char* localport | 
Definition at line 158 of file qmail-smtpd.c.
| stralloc mailfrom = {0} | 
Definition at line 532 of file qmail-smtpd.c.
| stralloc mailto = {0} | 
Definition at line 268 of file qmail-smtpd.c.
| struct constmap mapbhlo | 
Definition at line 220 of file qmail-smtpd.c.
| struct constmap mapbmf | 
Definition at line 212 of file qmail-smtpd.c.
| struct constmap mapbrt | 
Definition at line 216 of file qmail-smtpd.c.
| int maxrcptcount = 0 | 
Definition at line 242 of file qmail-smtpd.c.
| char* mfdnscheck | 
Definition at line 238 of file qmail-smtpd.c.
| stralloc mfparms = {0} | 
Definition at line 536 of file qmail-smtpd.c.
| unsigned int nolines = 0 | 
Definition at line 1224 of file qmail-smtpd.c.
| char outbuf[BUFSIZE_LINE] | 
Definition at line 85 of file qmail-smtpd.c.
| stralloc pgbind = {0} | 
Definition at line 250 of file qmail-smtpd.c.
| stralloc protocol = {0} | 
Definition at line 163 of file qmail-smtpd.c.
| char* qhpsi | 
Definition at line 239 of file qmail-smtpd.c.
| struct qmail qqt | 
Definition at line 1216 of file qmail-smtpd.c.
| stralloc rblinfo = {0} | 
Definition at line 271 of file qmail-smtpd.c.
| char* rblsmtpd | 
Definition at line 272 of file qmail-smtpd.c.
| int rcptcount = 0 | 
Definition at line 543 of file qmail-smtpd.c.
| stralloc rcptto = {0} | 
Definition at line 533 of file qmail-smtpd.c.
| stralloc rddr = {0} | 
Definition at line 531 of file qmail-smtpd.c.
| char* relayclient | 
Definition at line 159 of file qmail-smtpd.c.
| char* remotehost | 
Definition at line 155 of file qmail-smtpd.c.
| char* remoteinfo | 
Definition at line 156 of file qmail-smtpd.c.
| char* remoteip | 
Definition at line 154 of file qmail-smtpd.c.
| stralloc sa = {0} | 
Definition at line 94 of file qmail-smtpd.c.
| int seenauth = 0 | 
Definition at line 254 of file qmail-smtpd.c.
| int seenhelo = 0 | 
Definition at line 171 of file qmail-smtpd.c.
| int seenmail = 0 | 
Definition at line 538 of file qmail-smtpd.c.
| int seentls = 0 | 
Definition at line 258 of file qmail-smtpd.c.
| int smtpauth = 0 | 
Definition at line 253 of file qmail-smtpd.c.
| struct commands smtpcommands[] | 
Definition at line 1686 of file qmail-smtpd.c.
| int starttls = 0 | 
Definition at line 257 of file qmail-smtpd.c.
| int tarpitcount = 0 | 
Definition at line 246 of file qmail-smtpd.c.
| int tarpitdelay = 0 | 
Definition at line 247 of file qmail-smtpd.c.
| unsigned long timeout = SMTP_TIMEOUT | 
Definition at line 60 of file qmail-smtpd.c.
| stralloc tlsinfo = {0} | 
Definition at line 166 of file qmail-smtpd.c.
| char* tlsversion | 
Definition at line 260 of file qmail-smtpd.c.
| char* ucspitls = 0 | 
Definition at line 259 of file qmail-smtpd.c.
| char unique[FMT_ULONG+FMT_ULONG+3] | 
Definition at line 1445 of file qmail-smtpd.c.
| stralloc user = {0} | 
Definition at line 534 of file qmail-smtpd.c.