commit - 4f29629bac17e2bc8fec298499946fd7518d249e
commit + b7482b5c02da35acb2ae0fb464cf1764dd2773b3
blob - 3bdfa0acc2e91c50c8f38f9078d9efa9a81251d9
blob + b5353ae314cdccbdaaeac0a6453b87121d4faea6
--- filter-admdscrub.8
+++ filter-admdscrub.8
flag can be set to reject mails containing these headers.
If
.Ar authserv-id
-is not specified it defaults to the system hostname.
+is not specified it defaults to opensmtpd's
+.Ic admd
+option.
For more verbose logging the
.Fl v
flag can be used.
.Sh SEE ALSO
-.Xr smtpd 8
+.Xr smtpd.conf 5
.Sh STANDARDS
.Rs
.%A M. Kucherawy
blob - 1f776bcb78fb44859e4b8b7ad9b91cefa9e09c8a
blob + 612501c6400f2181e5c364afda6f4d315c590eb6
--- main.c
+++ main.c
};
void usage(void);
+void admd_conf(const char *, const char *);
void *admd_message_new(struct osmtpd_ctx *);
void admd_message_free(struct osmtpd_ctx *, void *);
void admd_dataline(struct osmtpd_ctx *, const char *);
const char *admd_authservid(struct admd_message *);
void admd_freecache(struct admd_message *);
-char authservid[256];
+char *authservid;
int reject = 0;
int verbose = 0;
argv += optind;
if (argc > 1)
osmtpd_errx(1, "invalid authservid count");
- if (argc == 1) {
- if (strlcpy(authservid, argv[0], sizeof(authservid)) >=
- sizeof(authservid))
- osmtpd_errx(1, "authserv-id is too long");
- } else {
- if (gethostname(authservid, sizeof(authservid)) == -1)
- osmtpd_err(1, "gethostname");
- }
- if (strchr(authservid, '\r') != NULL ||
- strchr(authservid, '\n') != NULL)
- osmtpd_errx(1, "ubsupported character in authserv-id");
+ if (argc == 1)
+ authservid = argv[0];
osmtpd_local_message(admd_message_new, admd_message_free);
osmtpd_register_filter_dataline(admd_dataline);
osmtpd_register_filter_commit(admd_commit);
+ osmtpd_register_conf(admd_conf);
osmtpd_run();
return 0;
}
+void
+admd_conf(const char *key, const char *value)
+{
+ if (key == NULL) {
+ if (authservid == NULL)
+ osmtpd_errx(1, "Didn't receieve admd config option");
+ return;
+ }
+ if (strcmp(key, "admd") == 0 && authservid == NULL) {
+ if ((authservid = strdup(value)) == NULL)
+ osmtpd_err(1, "malloc");
+ }
+}
+
void *
admd_message_new(struct osmtpd_ctx *ctx)
{