summaryrefslogtreecommitdiffstats
path: root/src/submission-login/client.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/submission-login/client.h')
-rw-r--r--src/submission-login/client.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/submission-login/client.h b/src/submission-login/client.h
new file mode 100644
index 0000000..ba932af
--- /dev/null
+++ b/src/submission-login/client.h
@@ -0,0 +1,38 @@
+#ifndef CLIENT_H
+#define CLIENT_H
+
+#include "net.h"
+#include "client-common.h"
+#include "auth-client.h"
+#include "smtp-server.h"
+
+enum submission_proxy_state {
+ SUBMISSION_PROXY_BANNER = 0,
+ SUBMISSION_PROXY_EHLO,
+ SUBMISSION_PROXY_STARTTLS,
+ SUBMISSION_PROXY_TLS_EHLO,
+ SUBMISSION_PROXY_XCLIENT,
+ SUBMISSION_PROXY_XCLIENT_EHLO,
+ SUBMISSION_PROXY_AUTHENTICATE,
+
+ SUBMISSION_PROXY_STATE_COUNT
+};
+
+struct submission_client {
+ struct client common;
+ const struct submission_login_settings *set;
+ enum smtp_capability backend_capabilities;
+
+ struct smtp_server_connection *conn;
+ struct smtp_server_cmd_ctx *pending_auth;
+
+ enum submission_proxy_state proxy_state;
+ enum smtp_capability proxy_capability;
+ char *proxy_sasl_ir;
+ unsigned int proxy_reply_status;
+ struct smtp_server_reply *proxy_reply;
+ const char **proxy_xclient;
+ unsigned int proxy_xclient_replies_expected;
+};
+
+#endif