summaryrefslogtreecommitdiffstats
path: root/src/submission/submission-backend-relay.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/submission/submission-backend-relay.h')
-rw-r--r--src/submission/submission-backend-relay.h64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/submission/submission-backend-relay.h b/src/submission/submission-backend-relay.h
new file mode 100644
index 0000000..82a600a
--- /dev/null
+++ b/src/submission/submission-backend-relay.h
@@ -0,0 +1,64 @@
+#ifndef SUBMISSION_BACKEND_RELAY_H
+#define SUBMISSION_BACKEND_RELAY_H
+
+#include "smtp-client-connection.h"
+#include "smtp-client-transaction.h"
+
+#include "submission-backend.h"
+
+struct client;
+struct submission_backend_relay;
+
+struct submision_backend_relay_settings {
+ const char *my_hostname;
+
+ enum smtp_protocol protocol;
+ const char *path, *host;
+ struct ip_addr ip; /* if empty, resolve host */
+ in_port_t port;
+
+ const char *const *extra_capabilities;
+
+ const char *user, *master_user;
+ const char *password;
+ const struct dsasl_client_mech *sasl_mech;
+
+ enum smtp_client_connection_ssl_mode ssl_mode;
+
+ const char *rawlog_dir;
+ unsigned int max_idle_time;
+
+ unsigned int connect_timeout_msecs;
+ unsigned int command_timeout_msecs;
+
+ bool ssl_verify:1;
+ bool trusted:1;
+};
+
+struct submission_backend_relay *
+submission_backend_relay_create(
+ struct client *client,
+ const struct submision_backend_relay_settings *set);
+
+/* Returns the base backend object for this relay backend */
+struct submission_backend *
+submission_backend_relay_get(struct submission_backend_relay *backend)
+ ATTR_PURE;
+
+/* Returns the client connection for this relay backend */
+struct smtp_client_connection *
+submission_backend_relay_get_connection(
+ struct submission_backend_relay *backend) ATTR_PURE;
+/* Returns the current client transaction for this relay backend */
+struct smtp_client_transaction *
+submission_backend_relay_get_transaction(
+ struct submission_backend_relay *backend) ATTR_PURE;
+
+/* Initializes the client transaction manually, which allows providing
+ alternative transaction flags. */
+struct smtp_client_transaction *
+submission_backend_relay_init_transaction(
+ struct submission_backend_relay *backend,
+ enum smtp_client_transaction_flags flags);
+
+#endif