summaryrefslogtreecommitdiff
path: root/src/smtpdlog.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/smtpdlog.c')
-rw-r--r--src/smtpdlog.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/smtpdlog.c b/src/smtpdlog.c
index c7505af..6cb0266 100644
--- a/src/smtpdlog.c
+++ b/src/smtpdlog.c
@@ -8,6 +8,7 @@
#include "exit.h"
#include "fmt.h"
#include "str.h"
+
#define FDLOG 2
char *reply421pgl;
@@ -43,11 +44,13 @@ static void logs(char *s)
{
if (buffer_puts(&bo2, s) == -1) _exit(1);
} /* single string */
+
static void logp(char *s)
{
logs(" P:");
logs(s);
} /* protocol */
+
static void logh(char *s1, char *s2, char *s3)
{
logs(" S:");
@@ -57,27 +60,32 @@ static void logh(char *s1, char *s2, char *s3)
logs(" H:");
logs(s3);
} /* host */
+
static void logm(char *s)
{
logs(" F:");
logs(s);
} /* mailfrom */
+
static void logt(char *s)
{
logs(" T:");
logs(s);
} /* rcptto */
+
static void logi(char *s)
{
logs(" '");
logs(s);
logs("'");
} /* information */
+
static void logn(char *s)
{
if (buffer_puts(&bo2, s) == -1) _exit(1);
if (buffer_flush(&bo2) == -1) _exit(1);
} /* end */
+
static void logpid()
{
strnum[fmt_ulong(strnum, getpid())] = 0;
@@ -98,6 +106,7 @@ void smtp_loga(char *s1, char *s2, char *s3, char *s4, char *s5, char *s6, char
logi(s8);
logn("\n");
} /* Auth info */
+
void smtp_logb(char *s1, char *s2, char *s3, char *s4, char *s5, char *s6, char *s7)
{
logpid();
@@ -109,6 +118,7 @@ void smtp_logb(char *s1, char *s2, char *s3, char *s4, char *s5, char *s6, char
logi(s6);
logn("\n");
} /* Auth info */
+
void smtp_logg(char *s1, char *s2, char *s3, char *s4, char *s5, char *s6, char *s7)
{
logpid();
@@ -119,6 +129,7 @@ void smtp_logg(char *s1, char *s2, char *s3, char *s4, char *s5, char *s6, char
logt(s7);
logn("\n");
} /* Generic */
+
void smtp_logh(char *s1, char *s2, char *s3, char *s4, char *s5)
{
logpid();
@@ -127,6 +138,7 @@ void smtp_logh(char *s1, char *s2, char *s3, char *s4, char *s5)
logh(s3, s4, s5);
logn("\n");
} /* Host */
+
void smtp_logi(char *s1, char *s2, char *s3, char *s4, char *s5, char *s6, char *s7, char *s8)
{
logpid();
@@ -138,6 +150,7 @@ void smtp_logi(char *s1, char *s2, char *s3, char *s4, char *s5, char *s6, char
logi(s8);
logn("\n");
} /* Generic + Info */
+
void smtp_logr(char *s1, char *s2, char *s3, char *s4, char *s5, char *s6, char *s7, char *s8)
{
logpid();
@@ -154,36 +167,42 @@ void die_read()
{
_exit(1);
}
+
void die_alarm()
{
out("451 timeout (#4.4.2)\r\n");
flush();
_exit(1);
}
+
void die_nomem()
{
out("421 out of memory (#4.3.0)\r\n");
flush();
_exit(1);
}
+
void die_control()
{
out("421 unable to read controls (#4.3.0)\r\n");
flush();
_exit(1);
}
+
void die_ipme()
{
out("421 unable to figure out my IP addresses (#4.3.0)\r\n");
flush();
_exit(1);
}
+
void die_starttls()
{
out("454 TLS not available due to temporary reason (#5.7.3)\r\n");
flush();
_exit(1);
}
+
void die_recipients()
{
out("421 unable to check recipients (#4.3.0)\r\n");
@@ -195,18 +214,22 @@ void err_unimpl()
{
out("500 unimplemented (#5.5.1)\r\n");
}
+
void err_syntax()
{
out("555 syntax error (#5.5.4)\r\n");
}
+
void err_noop()
{
out("250 ok\r\n");
}
+
void err_vrfy()
{
out("252 send some mail, i'll try my best\r\n");
}
+
void err_qqt()
{
out("451 qqt failure (#4.3.0)\r\n");
@@ -217,16 +240,19 @@ int err_child()
out("454 problem with child and I can't auth (#4.3.0)\r\n");
return -1;
}
+
int err_fork()
{
out("454 child won't start and I can't auth (#4.3.0)\r\n");
return -1;
}
+
int err_pipe()
{
out("454 unable to open pipe and I can't auth (#4.3.0)\r\n");
return -1;
}
+
int err_write()
{
out("454 unable to write pipe and I can't auth (#4.3.0)\r\n");
@@ -238,6 +264,7 @@ int err_postgl()
out("454 problem with child and I can't greylist (#4.3.0)\r\n");
return -1;
}
+
int err_forkgl()
{
out("454 problem with child and I can't greylist (#4.3.0)\r\n");
@@ -251,6 +278,7 @@ int err_starttls()
out("454 TLS not available due to temporary reason (#5.7.3)\r\n");
_exit(1);
}
+
void err_tlsreq(char *s1, char *s2, char *s3, char *s4, char *s5)
{
out("535 STARTTLS required (#5.7.1)\r\n");
@@ -274,44 +302,53 @@ void err_authsetup(char *s1, char *s2, char *s3, char *s4, char *s5)
out("530 Auth not available (#5.7.1)\r\n");
smtp_logh(s1, s2, s3, s4, s5);
}
+
void err_authd()
{
out("503 you're already authenticated (#5.5.0)\r\n");
}
+
void err_authmail()
{
out("503 no auth during mail transaction (#5.5.0)\r\n");
}
+
void err_authfail(char *s1, char *s2, char *s3, char *s4, char *s5, char *s6, char *s7)
{
out("535 authentication failed (#5.7.1)\r\n");
smtp_logb(s1, s2, s3, s4, s5, s6, s7);
}
+
void err_authreq(char *s1, char *s2, char *s3, char *s4, char *s5)
{
out("535 authentication required (#5.7.1)\r\n");
smtp_logh(s1, s2, s3, s4, s5);
}
+
void err_submission(char *s1, char *s2, char *s3, char *s4, char *s5)
{
out("530 Authorization required (#5.7.1) \r\n");
smtp_logh(s1, s2, s3, s4, s5);
}
+
int err_authabort()
{
out("501 auth exchange canceled (#5.0.0)\r\n");
return -1;
}
+
int err_authinput()
{
out("501 malformed auth input (#5.5.4)\r\n");
return -1;
}
+
void err_authinvalid(char *s1, char *s2, char *s3, char *s4, char *s5)
{
out("504 auth type unimplemented (#5.5.1)\r\n");
smtp_logh(s1, s2, s3, s4, s5);
}
+
int err_noauth()
{
out("504 auth type unimplemented (#5.5.1)\r\n");
@@ -332,6 +369,7 @@ void err_mav(char *s1, char *s2, char *s3, char *s4, char *s5, char *s6, char *s
out(" (#5.7.1)\r\n");
smtp_logg(s1, s2, s3, s4, s5, s6, s7);
}
+
void err_bmf(char *s1, char *s2, char *s3, char *s4, char *s5, char *s6, char *s7, char *s8)
{
out("553 sorry, your envelope sender is in my badmailfrom list ");
@@ -339,6 +377,7 @@ void err_bmf(char *s1, char *s2, char *s3, char *s4, char *s5, char *s6, char *s
out(" (#5.7.1)\r\n");
smtp_logi(s1, s2, s3, s4, s5, s6, s7, s8);
}
+
void err_mfdns(char *s1, char *s2, char *s3, char *s4, char *s5, char *s6, char *s7)
{
out("553 sorry, your envelope sender must exist ");
@@ -385,6 +424,7 @@ void postgrey(char *s1, char *s2, char *s3, char *s4, char *s5, char *s6, char *
out(" (#4.3.0)\r\n");
smtp_logg(s1, s2, s3, s4, s5, s6, s7);
}
+
void err_nogateway(char *s1, char *s2, char *s3, char *s4, char *s5, char *s6, char *s7)
{
out("553 sorry, that domain isn't in my list of allowed rcpthosts ");
@@ -392,6 +432,7 @@ void err_nogateway(char *s1, char *s2, char *s3, char *s4, char *s5, char *s6, c
out(" (#5.7.1)\r\n");
smtp_logg(s1, s2, s3, s4, s5, s6, s7);
}
+
void err_brt(char *s1, char *s2, char *s3, char *s4, char *s5, char *s6, char *s7)
{
out("553 sorry, your envelope recipient is in my badrcptto list ");
@@ -399,11 +440,13 @@ void err_brt(char *s1, char *s2, char *s3, char *s4, char *s5, char *s6, char *s
out(" (#5.7.1)\r\n");
smtp_logg(s1, s2, s3, s4, s5, s6, s7);
}
+
void err_rcpts(char *s1, char *s2, char *s3, char *s4, char *s5, char *s6, char *s7)
{
out("452 sorry, too many recipients (#4.5.3)\r\n"); /* RFC 5321 */
smtp_logg(s1, s2, s3, s4, s5, s6, s7);
}
+
void err_recipient(char *s1, char *s2, char *s3, char *s4, char *s5, char *s6, char *s7)
{
if (env_get("RECIPIENTS450"))
@@ -424,17 +467,20 @@ void straynewline()
flush();
_exit(1);
}
+
void err_notorious()
{
out("503 DATA command not accepted at this time (#5.5.1)\r\n");
flush();
_exit(1);
}
+
void err_size(char *s1, char *s2, char *s3, char *s4, char *s5, char *s6, char *s7)
{
out("552 sorry, that message size exceeds my databytes limit (#5.3.4)\r\n");
smtp_logg(s1, s2, s3, s4, s5, s6, s7);
}
+
void err_data(char *s1, char *s2, char *s3, char *s4, char *s5, char *s6, char *s7, char *s8)
{
out("554 sorry, invalid message content ");