diff options
Diffstat (limited to 'common')
| -rw-r--r-- | common/smtppass.c | 21 | 
1 files changed, 9 insertions, 12 deletions
diff --git a/common/smtppass.c b/common/smtppass.c index f021a8b..600f31c 100644 --- a/common/smtppass.c +++ b/common/smtppass.c @@ -90,7 +90,7 @@ clamsmtp_thread_t;  #define SMTP_OK             "250 Ok" CRLF  #define SMTP_DATA           "DATA" CRLF -#define SMTP_START          "220 " +#define SMTP_BANNER         "220 clamsmtp" CRLF  #define SMTP_DELIMS         "\r\n\t :"  #define HELO_CMD            "HELO" @@ -768,6 +768,13 @@ static int smtp_passthru(clamsmtp_context_t* ctx)               * We intercept the first response we get from the server.               * This allows us to change header so that it doesn't look               * to the client server that we're in a wierd loop. +             * +             * In different situations using the local hostname or +             * 'localhost' don't work because the receiving mail server +             * expects one of those to be its own name. We use 'clamsmtp' +             * instead. No properly configured server would have this +             * as their domain name, and RFC 2821 allows us to use +             * an arbitrary but identifying string.               */              if(first_rsp)              { @@ -777,17 +784,7 @@ static int smtp_passthru(clamsmtp_context_t* ctx)                  {                      messagex(ctx, LOG_DEBUG, "intercepting initial response"); -                    strlcpy(ctx->line, SMTP_START, LINE_LENGTH); - -                    r = KL(SMTP_START); - -                    if(gethostname(ctx->line + r, LINE_LENGTH - r) == -1) -                        strlcat(ctx->line, "clamsmtp", LINE_LENGTH); - -                    strlcat(ctx->line, CRLF, LINE_LENGTH); -                    ctx->line[LINE_LENGTH - 1] = 0; - -                    if(write_data(ctx, &(ctx->client), ctx->line) == -1) +                    if(write_data(ctx, &(ctx->client), SMTP_BANNER) == -1)                          RETURN(-1);                      /* Command handled */  | 
