diff --git a/conf.c b/conf.c index 6e4eb25..877f37d 100644 --- a/conf.c +++ b/conf.c @@ -229,6 +229,8 @@ parse_conf(const char *config_path) config.features |= INSECURE; else if (strcmp(word, "FULLBOUNCE") == 0 && data == NULL) config.features |= FULLBOUNCE; + else if (strcmp(word, "NULLCLIENT") == 0 && data == NULL) + config.features |= NULLCLIENT; else { errlogx(1, "syntax error in %s:%d", config_path, lineno); /* NOTREACHED */ diff --git a/dma.c b/dma.c index 25af9b0..e9a285e 100644 --- a/dma.c +++ b/dma.c @@ -202,7 +202,7 @@ add_recp(struct queue *queue, const char *str, int expand) } } LIST_INSERT_HEAD(&queue->queue, it, next); - if (strrchr(it->addr, '@') == NULL) { + if (!(config.features & NULLCLIENT) && strrchr(it->addr, '@') == NULL) { it->remote = 0; if (expand) { aliased = do_alias(queue, it->addr); diff --git a/dma.h b/dma.h index a069ba4..4ce0094 100644 --- a/dma.h +++ b/dma.h @@ -66,6 +66,7 @@ #define INSECURE 0x020 /* Allow plain login w/o encryption */ #define FULLBOUNCE 0x040 /* Bounce the full message */ #define TLS_OPP 0x080 /* Opportunistic STARTTLS */ +#define NULLCLIENT 0x100 /* Nullclient support */ #ifndef CONF_PATH #error Please define CONF_PATH