+extern int mailserver_socket_temp;
+extern const char *program_name;
+
+/* POSIX space characters,
+ * <tab>;<newline>;<vertical-tab>;<form-feed>;<carriage-return>;<space> */
+#define POSIX_space "\t\n\v\f\r "
+
+/** Resolve the a TCP service name or a string containing only a decimal
+ * positive integer to a port number. Returns -1 for error. */
+int servport(const char *service);
+
+#ifndef HAVE_GETNAMEINFO
+# define NI_NUMERICHOST 1
+# define NI_NUMERICSERV 2
+# define NI_NOFQDN 4
+# define NI_NAMEREQD 8
+# define NI_DGRAM 16
+#endif
+
+int fm_getaddrinfo(const char *node, const char *serv, const struct addrinfo *hints, struct addrinfo **res);
+void fm_freeaddrinfo(struct addrinfo *ai);
+
+/* prototypes from tls.c */
+int maybe_tls(struct query *ctl);
+int must_tls(struct query *ctl);
+
+/* prototype from rfc822valid.c */
+int rfc822_valid_msgid(const unsigned char *);
+
+/* prototype from x509_name_match.c */
+int name_match(const char *p1, const char *p2);
+
+/* prototype from ntlmsubr.c */
+#ifdef NTLM_ENABLE
+int ntlm_helper(int sock, struct query *ctl, const char *protocol);
+#endif
+
+/* macro to determine if we want to spam progress to stdout */
+#define want_progress() \
+ ((outlevel >= O_VERBOSE || (outlevel > O_SILENT && run.showdots)) \
+ && !run.use_syslog \
+ && (run.showdots || !is_a_file(1)))
+
+#endif