X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=postlicyd%2Fmain-postlicyd.c;h=3cce400338bb8456ae9f7a14f5512770fb3b0a3d;hb=db33734000d10dde33e52777bc76b0ee398be406;hp=950e5818a8a83a691c2165814955f8d075eb0945;hpb=6aafe01d02acf2c2688ba7047b6f2f738afff50a;p=apps%2Fpfixtools.git diff --git a/postlicyd/main-postlicyd.c b/postlicyd/main-postlicyd.c index 950e581..3cce400 100644 --- a/postlicyd/main-postlicyd.c +++ b/postlicyd/main-postlicyd.c @@ -41,6 +41,8 @@ #include "epoll.h" #include "policy_tokens.h" #include "server.h" +#include "query.h" +#include "config.h" #define DAEMON_NAME "postlicyd" #define DEFAULT_PORT 10000 @@ -49,67 +51,6 @@ DECLARE_MAIN -enum smtp_state { - SMTP_UNKNOWN, - SMTP_CONNECT, - SMTP_EHLO, - SMTP_HELO = SMTP_EHLO, - SMTP_MAIL, - SMTP_RCPT, - SMTP_DATA, - SMTP_END_OF_MESSAGE, - SMTP_VRFY, - SMTP_ETRN, -}; - -/* \see http://www.postfix.org/SMTPD_POLICY_README.html */ -typedef struct query_t { - unsigned state : 4; - unsigned esmtp : 1; - - const char *helo_name; - const char *queue_id; - const char *sender; - const char *recipient; - const char *recipient_count; - const char *client_address; - const char *client_name; - const char *reverse_client_name; - const char *instance; - - /* postfix 2.2+ */ - const char *sasl_method; - const char *sasl_username; - const char *sasl_sender; - const char *size; - const char *ccert_subject; - const char *ccert_issuer; - const char *ccert_fingerprint; - - /* postfix 2.3+ */ - const char *encryption_protocol; - const char *encryption_cipher; - const char *encryption_keysize; - const char *etrn_domain; - - /* postfix 2.5+ */ - const char *stress; - - const char *eoq; -} query_t; - -static query_t *query_new(void) -{ - return p_new(query_t, 1); -} - -static void query_delete(query_t **query) -{ - if (*query) { - p_delete(query); - } -} - static void *query_starter(server_t* server) { return query_new(); @@ -320,6 +261,11 @@ int main(int argc, char *argv[]) return EXIT_FAILURE; } + config_t *config = config_read(argv[optind]); + if (config == NULL) { + return EXIT_FAILURE; + } + if (common_setup(pidfile, false, RUNAS_USER, RUNAS_GROUP, daemonize) != EXIT_SUCCESS || start_listener(port) < 0) {