|
Simone Caronni |
3939b2 |
--- manpages/bsmtp.1.old.old 2012-06-28 16:52:03.000000000 +0200
|
|
Simone Caronni |
3939b2 |
+++ manpages/bsmtp.1 2012-07-10 14:39:27.818315931 +0200
|
|
Simone Caronni |
3939b2 |
@@ -2,7 +2,7 @@
|
|
Simone Caronni |
3939b2 |
.\" First parameter, NAME, should be all caps
|
|
Simone Caronni |
3939b2 |
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
|
Simone Caronni |
3939b2 |
.\" other parameters are allowed: see man(7), man(1)
|
|
Simone Caronni |
3939b2 |
-.TH BSMTP 1 "6 December 2009" "Kern Sibbald" "Network backup, recovery and verification"
|
|
Simone Caronni |
3939b2 |
+.TH BSMTP 1 "3 July 2012" "Kern Sibbald" "Network backup, recovery and verification"
|
|
Simone Caronni |
3939b2 |
.\" Please adjust this date whenever revising the manpage.
|
|
Simone Caronni |
3939b2 |
.\"
|
|
Simone Caronni |
3939b2 |
.SH NAME
|
|
Simone Caronni |
3939b2 |
@@ -23,9 +23,18 @@
|
|
Simone Caronni |
3939b2 |
|
|
Simone Caronni |
3939b2 |
.SH OPTIONS
|
|
Simone Caronni |
3939b2 |
.TP
|
|
Simone Caronni |
3939b2 |
+.B \-4
|
|
Simone Caronni |
3939b2 |
+Forces bsmtp to use IPv4 addresses only.
|
|
Simone Caronni |
3939b2 |
+.TP
|
|
Simone Caronni |
3939b2 |
+.B \-6
|
|
Simone Caronni |
3939b2 |
+Forces bsmtp to use IPv6 addresses only.
|
|
Simone Caronni |
3939b2 |
+.TP
|
|
Simone Caronni |
3939b2 |
.B \-8
|
|
Simone Caronni |
3939b2 |
Encode the mail in UTF-8.
|
|
Simone Caronni |
3939b2 |
.TP
|
|
Simone Caronni |
3939b2 |
+.B \-a
|
|
Simone Caronni |
3939b2 |
+Use any ip protocol for address resolution.
|
|
Simone Caronni |
3939b2 |
+.TP
|
|
Simone Caronni |
3939b2 |
.B \-c
|
|
Simone Caronni |
3939b2 |
Set the \fBCc:\fR header.
|
|
Simone Caronni |
3939b2 |
.TP
|
|
Simone Caronni |
3939b2 |
@@ -115,4 +124,4 @@
|
|
Simone Caronni |
3939b2 |
.nh
|
|
Simone Caronni |
3939b2 |
<lbc@members.fsf.org>.
|
|
Simone Caronni |
3939b2 |
.SH SEE ALSO
|
|
Simone Caronni |
3939b2 |
-.BR "bacula-dir" "(8) "
|
|
Simone Caronni |
3939b2 |
\ No newline at end of file
|
|
Simone Caronni |
3939b2 |
+.BR "bacula-dir" "(8) "
|
|
Simone Caronni |
3939b2 |
--- src/tools/bsmtp.c.old 2012-06-28 16:52:03.000000000 +0200
|
|
Simone Caronni |
3939b2 |
+++ src/tools/bsmtp.c 2012-07-10 14:39:27.967318985 +0200
|
|
Simone Caronni |
3939b2 |
@@ -85,6 +85,12 @@
|
|
Simone Caronni |
3939b2 |
#define MAXSTRING 254
|
|
Simone Caronni |
3939b2 |
#endif
|
|
Simone Caronni |
3939b2 |
|
|
Simone Caronni |
3939b2 |
+enum resolv_type {
|
|
Simone Caronni |
3939b2 |
+ RESOLV_PROTO_ANY,
|
|
Simone Caronni |
3939b2 |
+ RESOLV_PROTO_IPV4,
|
|
Simone Caronni |
3939b2 |
+ RESOLV_PROTO_IPV6
|
|
Simone Caronni |
3939b2 |
+};
|
|
Simone Caronni |
3939b2 |
+
|
|
Simone Caronni |
3939b2 |
static FILE *sfp;
|
|
Simone Caronni |
3939b2 |
static FILE *rfp;
|
|
Simone Caronni |
3939b2 |
|
|
Simone Caronni |
3939b2 |
@@ -97,6 +103,7 @@
|
|
Simone Caronni |
3939b2 |
static int mailport = 25;
|
|
Simone Caronni |
3939b2 |
static char my_hostname[MAXSTRING];
|
|
Simone Caronni |
3939b2 |
static bool content_utf8 = false;
|
|
Simone Caronni |
3939b2 |
+static resolv_type default_resolv_type = RESOLV_PROTO_IPV4;
|
|
Simone Caronni |
3939b2 |
|
|
Simone Caronni |
3939b2 |
/*
|
|
Simone Caronni |
3939b2 |
* Take input that may have names and other stuff and strip
|
|
Simone Caronni |
3939b2 |
@@ -185,7 +192,12 @@
|
|
Simone Caronni |
3939b2 |
fprintf(stderr,
|
|
Simone Caronni |
3939b2 |
_("\n"
|
|
Simone Caronni |
3939b2 |
"Usage: %s [-f from] [-h mailhost] [-s subject] [-c copy] [recipient ...]\n"
|
|
Simone Caronni |
3939b2 |
+" -4 forces bsmtp to use IPv4 addresses only.\n"
|
|
Simone Caronni |
3939b2 |
+#ifdef HAVE_IPV6
|
|
Simone Caronni |
3939b2 |
+" -6 forces bsmtp to use IPv6 addresses only.\n"
|
|
Simone Caronni |
3939b2 |
+#endif
|
|
Simone Caronni |
3939b2 |
" -8 set charset to UTF-8\n"
|
|
Simone Caronni |
3939b2 |
+" -a use any ip protocol for address resolution\n"
|
|
Simone Caronni |
3939b2 |
" -c set the Cc: field\n"
|
|
Simone Caronni |
3939b2 |
" -d <nn> set debug level to <nn>\n"
|
|
Simone Caronni |
3939b2 |
" -dt print a timestamp in debug output\n"
|
|
Simone Caronni |
3939b2 |
@@ -277,6 +289,11 @@
|
|
Simone Caronni |
3939b2 |
struct hostent *hp;
|
|
Simone Caronni |
3939b2 |
struct sockaddr_in sin;
|
|
Simone Caronni |
3939b2 |
#endif
|
|
Simone Caronni |
3939b2 |
+#ifdef HAVE_IPV6
|
|
Simone Caronni |
3939b2 |
+ const char *options = "468ac:d:f:h:r:s:l:?";
|
|
Simone Caronni |
3939b2 |
+#else
|
|
Simone Caronni |
3939b2 |
+ const char *options = "48ac:d:f:h:r:s:l:?";
|
|
Simone Caronni |
3939b2 |
+#endif
|
|
Simone Caronni |
3939b2 |
|
|
Simone Caronni |
3939b2 |
setlocale(LC_ALL, "en_US");
|
|
Simone Caronni |
3939b2 |
bindtextdomain("bacula", LOCALEDIR);
|
|
Simone Caronni |
3939b2 |
@@ -285,11 +302,26 @@
|
|
Simone Caronni |
3939b2 |
my_name_is(argc, argv, "bsmtp");
|
|
Simone Caronni |
3939b2 |
maxlines = 0;
|
|
Simone Caronni |
3939b2 |
|
|
Simone Caronni |
3939b2 |
- while ((ch = getopt(argc, argv, "8c:d:f:h:r:s:l:?")) != -1) {
|
|
Simone Caronni |
3939b2 |
+ while ((ch = getopt(argc, argv, options)) != -1) {
|
|
Simone Caronni |
3939b2 |
switch (ch) {
|
|
Simone Caronni |
3939b2 |
+ case '4':
|
|
Simone Caronni |
3939b2 |
+ default_resolv_type = RESOLV_PROTO_IPV4;
|
|
Simone Caronni |
3939b2 |
+ break;
|
|
Simone Caronni |
3939b2 |
+
|
|
Simone Caronni |
3939b2 |
+#ifdef HAVE_IPV6
|
|
Simone Caronni |
3939b2 |
+ case '6':
|
|
Simone Caronni |
3939b2 |
+ default_resolv_type = RESOLV_PROTO_IPV6;
|
|
Simone Caronni |
3939b2 |
+ break;
|
|
Simone Caronni |
3939b2 |
+#endif
|
|
Simone Caronni |
3939b2 |
+
|
|
Simone Caronni |
3939b2 |
case '8':
|
|
Simone Caronni |
3939b2 |
content_utf8 = true;
|
|
Simone Caronni |
3939b2 |
break;
|
|
Simone Caronni |
3939b2 |
+
|
|
Simone Caronni |
3939b2 |
+ case 'a':
|
|
Simone Caronni |
3939b2 |
+ default_resolv_type = RESOLV_PROTO_ANY;
|
|
Simone Caronni |
3939b2 |
+ break;
|
|
Simone Caronni |
3939b2 |
+
|
|
Simone Caronni |
3939b2 |
case 'c':
|
|
Simone Caronni |
3939b2 |
Dmsg1(20, "cc=%s\n", optarg);
|
|
Simone Caronni |
3939b2 |
cc_addr = optarg;
|
|
Simone Caronni |
3939b2 |
@@ -430,16 +462,31 @@
|
|
Simone Caronni |
3939b2 |
lookup_host:
|
|
Simone Caronni |
3939b2 |
#ifdef HAVE_GETADDRINFO
|
|
Simone Caronni |
3939b2 |
memset(&hints, 0, sizeof(struct addrinfo));
|
|
Simone Caronni |
3939b2 |
- hints.ai_family = AF_UNSPEC;
|
|
Simone Caronni |
3939b2 |
+ switch (default_resolv_type) {
|
|
Simone Caronni |
3939b2 |
+ case RESOLV_PROTO_ANY:
|
|
Simone Caronni |
3939b2 |
+ hints.ai_family = AF_UNSPEC;
|
|
Simone Caronni |
3939b2 |
+ break;
|
|
Simone Caronni |
3939b2 |
+ case RESOLV_PROTO_IPV4:
|
|
Simone Caronni |
3939b2 |
+ hints.ai_family = AF_INET;
|
|
Simone Caronni |
3939b2 |
+ break;
|
|
Simone Caronni |
3939b2 |
+#ifdef HAVE_IPV6
|
|
Simone Caronni |
3939b2 |
+ case RESOLV_PROTO_IPV6:
|
|
Simone Caronni |
3939b2 |
+ hints.ai_family = AF_INET6;
|
|
Simone Caronni |
3939b2 |
+ break;
|
|
Simone Caronni |
3939b2 |
+#endif
|
|
Simone Caronni |
3939b2 |
+ default:
|
|
Simone Caronni |
3939b2 |
+ hints.ai_family = AF_UNSPEC;
|
|
Simone Caronni |
3939b2 |
+ break;
|
|
Simone Caronni |
3939b2 |
+ }
|
|
Simone Caronni |
3939b2 |
hints.ai_socktype = SOCK_STREAM;
|
|
Simone Caronni |
3939b2 |
- hints.ai_protocol = IPPROTO_TCP;
|
|
Simone Caronni |
3939b2 |
+ hints.ai_protocol = 0;
|
|
Simone Caronni |
3939b2 |
hints.ai_flags = 0;
|
|
Simone Caronni |
3939b2 |
snprintf(mail_port, sizeof(mail_port), "%d", mailport);
|
|
Simone Caronni |
3939b2 |
|
|
Simone Caronni |
3939b2 |
if ((res = getaddrinfo(mailhost, mail_port, &hints, &ai)) != 0) {
|
|
Simone Caronni |
3939b2 |
Pmsg2(0, _("Error unknown mail host \"%s\": ERR=%s\n"),
|
|
Simone Caronni |
3939b2 |
mailhost, gai_strerror(res));
|
|
Simone Caronni |
3939b2 |
- if (!strcasecmp(mailhost, "localhost")) {
|
|
Simone Caronni |
3939b2 |
+ if (strcasecmp(mailhost, "localhost")) {
|
|
Simone Caronni |
3939b2 |
Pmsg0(0, _("Retrying connection using \"localhost\".\n"));
|
|
Simone Caronni |
3939b2 |
mailhost = "localhost";
|
|
Simone Caronni |
3939b2 |
goto lookup_host;
|