commands.c revision 2dad3ab8045be38711f277f065b76f76bb5f63f8
61ea54c309169801a1833f99729723071c24c047Dirk Hogan/* Copyright (c) 2009 Dovecot authors, see the included COPYING file */
61ea54c309169801a1833f99729723071c24c047Dirk Hogan#define ERRSTR_TEMP_MAILBOX_FAIL "451 4.3.0 <%s> Temporary internal error"
61ea54c309169801a1833f99729723071c24c047Dirk Hogan#define ERRSTR_TEMP_USERDB_FAIL "451 4.3.0 <%s> Temporary user lookup failure"
61ea54c309169801a1833f99729723071c24c047Dirk Hogan#define LMTP_PROXY_DEFAULT_TIMEOUT_MSECS (1000*30)
61ea54c309169801a1833f99729723071c24c047Dirk Hoganint cmd_lhlo(struct client *client, const char *args)
61ea54c309169801a1833f99729723071c24c047Dirk Hogan const char *p;
3744900be632496920d4c9aca8f94ba6db4dd882Dirk Hogan client_send_line(client, "501 Missing hostname");
3744900be632496920d4c9aca8f94ba6db4dd882Dirk Hogan /* domain / address-literal */
3744900be632496920d4c9aca8f94ba6db4dd882Dirk Hogan rfc822_parser_init(&parser, (const unsigned char *)args, strlen(args),
61ea54c309169801a1833f99729723071c24c047Dirk Hogan client_send_line(client, "250-%s", client->my_domain);
61ea54c309169801a1833f99729723071c24c047Dirk Hogan client_send_line(client, "250-ENHANCEDSTATUSCODES");
61ea54c309169801a1833f99729723071c24c047Dirk Hogan client->state.lhlo = p_strdup(client->state_pool, str_c(domain));
61ea54c309169801a1833f99729723071c24c047Dirk Hoganint cmd_mail(struct client *client, const char *args)
3744900be632496920d4c9aca8f94ba6db4dd882Dirk Hogan unsigned int len;
61ea54c309169801a1833f99729723071c24c047Dirk Hogan client_send_line(client, "503 5.5.1 MAIL already given");
61ea54c309169801a1833f99729723071c24c047Dirk Hogan if (strncasecmp(addr, "FROM:<", 6) != 0 || addr[len-1] != '>') {
61ea54c309169801a1833f99729723071c24c047Dirk Hogan client_send_line(client, "501 5.5.4 Invalid parameters");
61ea54c309169801a1833f99729723071c24c047Dirk Hogan else if (strcasecmp(*argv, "BODY=8BITMIME") == 0)
61ea54c309169801a1833f99729723071c24c047Dirk Hogan "501 5.5.4 Unsupported options");
61ea54c309169801a1833f99729723071c24c047Dirk Hogan p_strndup(client->state_pool, addr + 6, len - 7);
61ea54c309169801a1833f99729723071c24c047Dirk Hogan p_array_init(&client->state.rcpt_to, client->state_pool, 64);
61ea54c309169801a1833f99729723071c24c047Dirk Hoganstatic bool rcpt_is_duplicate(struct client *client, const char *address)
61ea54c309169801a1833f99729723071c24c047Dirk Hoganclient_proxy_rcpt_parse_fields(struct lmtp_proxy_settings *set,
return FALSE;
return FALSE;
return proxying;
return FALSE;
return FALSE;
return FALSE;
return TRUE;
const char *username)
int ret;
if (ret <= 0) {
if (ret < 0) {
address);
return TRUE;
return FALSE;
return FALSE;
return FALSE;
return TRUE;
return name;
return name;
return name;
return name;
return name;
const char *p, *p2;
if (p != NULL) {
unsigned int len;
int ret = 0;
argv++;
if (ret < 0) {
if (ret == 0) {
void **sets;
int ret;
&error) < 0) {
ret = 0;
return ret;
unsigned int count;
int ret;
src_mail);
if (ret == 0)
return TRUE;
return FALSE;
FALSE);
return cinput;
static const char *wanted_headers[] = {
0, headers_ctx);
if (timeout) {
const char *host;
return ret;
int fd;
const unsigned char *data;
if (ret == 0)