diff src/smtp_out.h @ 0:08114f7dcc23 0.2.21

this is masqmail-0.2.21 from oliver kurth
author meillo@marmaro.de
date Fri, 26 Sep 2008 17:05:23 +0200
parents
children 26e34ae9a3e3
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/smtp_out.h	Fri Sep 26 17:05:23 2008 +0200
@@ -0,0 +1,91 @@
+/* smtp_out.h, Copyright (C) Oliver Kurth,
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/time.h>
+#include <netinet/in.h>
+#include <netdb.h>
+
+#define SMTP_BUF_LEN 1024
+#define SMTP_SIZE_ADD 1024
+
+#define SMTP_INITIAL_TIMEOUT 5*60
+#define SMTP_CMD_TIMEOUT 5*60
+#define SMTP_DATA_TIMEOUT 5*60
+#define SMTP_FINAL_TIMEOUT 10*60
+
+typedef
+enum _smtp_error{
+  smtp_ok = 0,   /* mail was delivered to at least one recpient */
+  smtp_trylater, /* server responded with 4xx */
+  smtp_fail,     /* server responded with 5xx */
+  smtp_timeout,  /* connection timed out */
+  smtp_eof,      /* got unexpected EOF */
+  smtp_syntax,   /* unexpected response */
+  smtp_cancel    /* we gave up (eg. size) */
+} smtp_error;
+
+
+typedef
+struct _smtp_base{
+  FILE *in;
+  FILE *out;
+
+  gint sock;
+  gint dup_sock;
+
+  gchar *remote_host;
+  gchar *helo_name;
+
+  gchar *buffer;
+  gint last_code;
+
+  gboolean use_esmtp;
+  gboolean use_size;
+  gboolean use_pipelining;
+  gboolean use_auth;
+  
+  gint max_size;
+
+  gchar **auth_names;
+
+  gchar *auth_name;
+  gchar *auth_login;
+  gchar *auth_secret;
+
+  smtp_error error;
+
+} smtp_base;
+
+gchar *set_heloname(smtp_base *psb, gchar *default_name, gboolean do_correct);
+gboolean set_auth(smtp_base *psb, gchar *name, gchar *login, gchar *secret);
+void destroy_smtpbase(smtp_base *psb);
+smtp_base *smtp_out_open(gchar *host, gint port, GList *resolve_list);
+smtp_base *smtp_out_open_child(gchar *cmd);
+gboolean smtp_out_rset(smtp_base *psb);
+gboolean smtp_out_init(smtp_base *psb);
+gint smtp_out_msg(smtp_base *psb,
+		  message *msg, address *return_path,
+		  GList *rcpt_list, GList *hdr_list);
+gboolean smtp_out_quit(smtp_base *psb);
+
+gint smtp_deliver(gchar *host, gint port, GList *resolve_list,
+		  message *msg,
+		  address *return_path,
+		  GList *rcpt_list);