if (data != NULL)
config->certfile = strdup(data);
}
+ else if (strcmp(word, "MAILNAME") == 0) {
+ if (data != NULL)
+ config->mailname = strdup(data);
+ }
+ else if (strcmp(word, "MAILNAMEFILE") == 0) {
+ if (data != NULL)
+ config->mailnamefile = strdup(data);
+ }
else if (strcmp(word, "VIRTUAL") == 0)
config->features |= VIRTUAL;
else if (strcmp(word, "STARTTLS") == 0)
.Xc
Uncomment if you want the bounce message to include the complete original
message, not just the headers.
+.It Ic MAILNAME Xo
+(string, default=empty)
+.Xc
+The name to be used when introducing this host, if different from
+the result of
+.Xr hostname 1 .
+If specified, this option overrides
+.Sq MAILNAMEFILE .
+.It Ic MAILNAMEFILE Xo
+(string, default=empty)
+.Xc
+The name of the file to read the
+.Sq MAILNAME
+from.
.El
.Ss virtusertable
The
hostname(void)
{
static char name[MAXHOSTNAMELEN+1];
+ int initialized = 0;
+ FILE *fp;
+ size_t len;
+
+ if (initialized)
+ return (name);
+ if (config->mailname != NULL && config->mailname[0] != '\0') {
+ snprintf(name, sizeof(name), "%s", config->mailname);
+ initialized = 1;
+ return (name);
+ }
+ if (config->mailnamefile != NULL && config->mailnamefile[0] != '\0') {
+ fp = fopen(config->mailnamefile, "r");
+ if (fp != NULL) {
+ if (fgets(name, sizeof(name), fp) != NULL) {
+ len = strlen(name);
+ while (len > 0 &&
+ (name[len - 1] == '\r' ||
+ name[len - 1] == '\n'))
+ name[--len] = '\0';
+ if (name[0] != '\0') {
+ initialized = 1;
+ return (name);
+ }
+ }
+ fclose(fp);
+ }
+ }
if (gethostname(name, sizeof(name)) != 0)
strcpy(name, "(unknown hostname)");
-
+ initialized = 1;
return name;
}
#ifdef HAVE_CRYPTO
SSL *ssl;
#endif /* HAVE_CRYPTO */
+ char *mailname;
+ char *mailnamefile;
};