aboutsummaryrefslogtreecommitdiffstats
path: root/src/qmail-remote/qmail-remote-io.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/qmail-remote/qmail-remote-io.c')
-rw-r--r--src/qmail-remote/qmail-remote-io.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/qmail-remote/qmail-remote-io.c b/src/qmail-remote/qmail-remote-io.c
index b7e9f8c..2b305c9 100644
--- a/src/qmail-remote/qmail-remote-io.c
+++ b/src/qmail-remote/qmail-remote-io.c
@@ -16,6 +16,7 @@ enum gola_e
GOLA_TIMEOUT,
GOLA_FDR,
GOLA_FDW,
+ GOLA_HELOHOST,
GOLA_N
} ;
@@ -140,12 +141,12 @@ static inline void smtp_body (buffer *in, buffer *out, char const *fmtip, char c
if (code >= 500)
{
qmailr_smtp_quit(out, timeout) ;
- qmailr_perm("qmail-remote-io: ", "connected to ", fmtip, " but sender was rejected") ;
+ qmailr_perm("qmail-remote-io: ", "connected to ", fmtip, " but sender was rejected", ".\nRemote host said: ", buf+4) ;
}
else if (code >= 400)
{
qmailr_smtp_quit(out, timeout) ;
- qmailr_temp("qmail-remote-io: ", "connected to ", fmtip, " but sender was rejected") ;
+ qmailr_temp("qmail-remote-io: ", "connected to ", fmtip, " but sender was rejected", ".\nRemote host said: ", buf+4) ;
}
for (unsigned int i = 0 ; i < n ; i++)
@@ -160,12 +161,12 @@ static inline void smtp_body (buffer *in, buffer *out, char const *fmtip, char c
if (code >= 500)
{
qmailr_smtp_quit(out, timeout) ;
- qmailr_die('h', fmtip, " does not like recipient.\n", "Remote host said: ", buf+4) ;
+ qmailr_die('h', fmtip, " does not like recipient", ".\nRemote host said: ", buf+4) ;
}
else if (code >= 400)
{
qmailr_smtp_quit(out, timeout) ;
- qmailr_die('s', fmtip, " does not like recipient.\n", "Remote host said: ", buf+4) ;
+ qmailr_die('s', fmtip, " does not like recipient", ".\nRemote host said: ", buf+4) ;
}
else
{
@@ -219,6 +220,7 @@ int main (int argc, char const *const *argv)
{ .so = 't', .lo = "timeoutremote", .i = GOLA_TIMEOUT },
{ .so = '6', .lo = "fdr", .i = GOLA_FDR },
{ .so = '7', .lo = "fdw", .i = GOLA_FDW },
+ { .so = 0, .lo = "helohost", .i = GOLA_HELOHOST },
} ;
char const *wgola[GOLA_N] = { 0 } ;
unsigned int fdr = 6, fdw = 7 ;
@@ -226,7 +228,7 @@ int main (int argc, char const *const *argv)
buffer in, out ;
char inbuf[1024] ;
char outbuf[BUFFER_OUTSIZE] ;
- unsigned int golc = qgol_main(argc, argv, 0, 0, rgola, 3, 0, wgola) ;
+ unsigned int golc = qgol_main(argc, argv, 0, 0, rgola, 4, 0, wgola) ;
argc -= golc ; argv += golc ;
if (argc < 3) qmailr_perm("qmail-remote-io: ", "too few arguments") ;
@@ -241,5 +243,10 @@ int main (int argc, char const *const *argv)
buffer_init(&out, &buffer_write, fdw, outbuf, BUFFER_OUTSIZE) ;
tain_now_set_stopwatch_g() ;
+ if (wgola[GOLA_HELOHOST])
+ {
+ if (qmailr_smtp_start(&in, &out, wgola[GOLA_HELOHOST], timeoutremote) == -1)
+ qmailr_tempusys("initiate SMTP exchange with ", argv[0]) ;
+ }
smtp_body(&in, &out, argv[0], argv[1], argv + 2, argc - 2, timeoutremote) ;
}