Fix bsmtp upstream bug sending mails to ipv4/ipv6 hosts
This commit is contained in:
parent
217785f731
commit
3939b2b758
148
bacula-5.2.10-bsmtp.patch
Normal file
148
bacula-5.2.10-bsmtp.patch
Normal file
@ -0,0 +1,148 @@
|
||||
--- manpages/bsmtp.1.old.old 2012-06-28 16:52:03.000000000 +0200
|
||||
+++ manpages/bsmtp.1 2012-07-10 14:39:27.818315931 +0200
|
||||
@@ -2,7 +2,7 @@
|
||||
.\" First parameter, NAME, should be all caps
|
||||
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
||||
.\" other parameters are allowed: see man(7), man(1)
|
||||
-.TH BSMTP 1 "6 December 2009" "Kern Sibbald" "Network backup, recovery and verification"
|
||||
+.TH BSMTP 1 "3 July 2012" "Kern Sibbald" "Network backup, recovery and verification"
|
||||
.\" Please adjust this date whenever revising the manpage.
|
||||
.\"
|
||||
.SH NAME
|
||||
@@ -23,9 +23,18 @@
|
||||
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
+.B \-4
|
||||
+Forces bsmtp to use IPv4 addresses only.
|
||||
+.TP
|
||||
+.B \-6
|
||||
+Forces bsmtp to use IPv6 addresses only.
|
||||
+.TP
|
||||
.B \-8
|
||||
Encode the mail in UTF-8.
|
||||
.TP
|
||||
+.B \-a
|
||||
+Use any ip protocol for address resolution.
|
||||
+.TP
|
||||
.B \-c
|
||||
Set the \fBCc:\fR header.
|
||||
.TP
|
||||
@@ -115,4 +124,4 @@
|
||||
.nh
|
||||
<lbc@members.fsf.org>.
|
||||
.SH SEE ALSO
|
||||
-.BR "bacula-dir" "(8) "
|
||||
\ No newline at end of file
|
||||
+.BR "bacula-dir" "(8) "
|
||||
--- src/tools/bsmtp.c.old 2012-06-28 16:52:03.000000000 +0200
|
||||
+++ src/tools/bsmtp.c 2012-07-10 14:39:27.967318985 +0200
|
||||
@@ -85,6 +85,12 @@
|
||||
#define MAXSTRING 254
|
||||
#endif
|
||||
|
||||
+enum resolv_type {
|
||||
+ RESOLV_PROTO_ANY,
|
||||
+ RESOLV_PROTO_IPV4,
|
||||
+ RESOLV_PROTO_IPV6
|
||||
+};
|
||||
+
|
||||
static FILE *sfp;
|
||||
static FILE *rfp;
|
||||
|
||||
@@ -97,6 +103,7 @@
|
||||
static int mailport = 25;
|
||||
static char my_hostname[MAXSTRING];
|
||||
static bool content_utf8 = false;
|
||||
+static resolv_type default_resolv_type = RESOLV_PROTO_IPV4;
|
||||
|
||||
/*
|
||||
* Take input that may have names and other stuff and strip
|
||||
@@ -185,7 +192,12 @@
|
||||
fprintf(stderr,
|
||||
_("\n"
|
||||
"Usage: %s [-f from] [-h mailhost] [-s subject] [-c copy] [recipient ...]\n"
|
||||
+" -4 forces bsmtp to use IPv4 addresses only.\n"
|
||||
+#ifdef HAVE_IPV6
|
||||
+" -6 forces bsmtp to use IPv6 addresses only.\n"
|
||||
+#endif
|
||||
" -8 set charset to UTF-8\n"
|
||||
+" -a use any ip protocol for address resolution\n"
|
||||
" -c set the Cc: field\n"
|
||||
" -d <nn> set debug level to <nn>\n"
|
||||
" -dt print a timestamp in debug output\n"
|
||||
@@ -277,6 +289,11 @@
|
||||
struct hostent *hp;
|
||||
struct sockaddr_in sin;
|
||||
#endif
|
||||
+#ifdef HAVE_IPV6
|
||||
+ const char *options = "468ac:d:f:h:r:s:l:?";
|
||||
+#else
|
||||
+ const char *options = "48ac:d:f:h:r:s:l:?";
|
||||
+#endif
|
||||
|
||||
setlocale(LC_ALL, "en_US");
|
||||
bindtextdomain("bacula", LOCALEDIR);
|
||||
@@ -285,11 +302,26 @@
|
||||
my_name_is(argc, argv, "bsmtp");
|
||||
maxlines = 0;
|
||||
|
||||
- while ((ch = getopt(argc, argv, "8c:d:f:h:r:s:l:?")) != -1) {
|
||||
+ while ((ch = getopt(argc, argv, options)) != -1) {
|
||||
switch (ch) {
|
||||
+ case '4':
|
||||
+ default_resolv_type = RESOLV_PROTO_IPV4;
|
||||
+ break;
|
||||
+
|
||||
+#ifdef HAVE_IPV6
|
||||
+ case '6':
|
||||
+ default_resolv_type = RESOLV_PROTO_IPV6;
|
||||
+ break;
|
||||
+#endif
|
||||
+
|
||||
case '8':
|
||||
content_utf8 = true;
|
||||
break;
|
||||
+
|
||||
+ case 'a':
|
||||
+ default_resolv_type = RESOLV_PROTO_ANY;
|
||||
+ break;
|
||||
+
|
||||
case 'c':
|
||||
Dmsg1(20, "cc=%s\n", optarg);
|
||||
cc_addr = optarg;
|
||||
@@ -430,16 +462,31 @@
|
||||
lookup_host:
|
||||
#ifdef HAVE_GETADDRINFO
|
||||
memset(&hints, 0, sizeof(struct addrinfo));
|
||||
- hints.ai_family = AF_UNSPEC;
|
||||
+ switch (default_resolv_type) {
|
||||
+ case RESOLV_PROTO_ANY:
|
||||
+ hints.ai_family = AF_UNSPEC;
|
||||
+ break;
|
||||
+ case RESOLV_PROTO_IPV4:
|
||||
+ hints.ai_family = AF_INET;
|
||||
+ break;
|
||||
+#ifdef HAVE_IPV6
|
||||
+ case RESOLV_PROTO_IPV6:
|
||||
+ hints.ai_family = AF_INET6;
|
||||
+ break;
|
||||
+#endif
|
||||
+ default:
|
||||
+ hints.ai_family = AF_UNSPEC;
|
||||
+ break;
|
||||
+ }
|
||||
hints.ai_socktype = SOCK_STREAM;
|
||||
- hints.ai_protocol = IPPROTO_TCP;
|
||||
+ hints.ai_protocol = 0;
|
||||
hints.ai_flags = 0;
|
||||
snprintf(mail_port, sizeof(mail_port), "%d", mailport);
|
||||
|
||||
if ((res = getaddrinfo(mailhost, mail_port, &hints, &ai)) != 0) {
|
||||
Pmsg2(0, _("Error unknown mail host \"%s\": ERR=%s\n"),
|
||||
mailhost, gai_strerror(res));
|
||||
- if (!strcasecmp(mailhost, "localhost")) {
|
||||
+ if (strcasecmp(mailhost, "localhost")) {
|
||||
Pmsg0(0, _("Retrying connection using \"localhost\".\n"));
|
||||
mailhost = "localhost";
|
||||
goto lookup_host;
|
@ -33,6 +33,7 @@ Patch2: bacula-5.2.2-queryfile.patch
|
||||
Patch3: bacula-5.2.4-log-path.patch
|
||||
Patch4: bacula-5.0.3-sqlite-priv.patch
|
||||
Patch5: bacula-5.2.7-bat-build.patch
|
||||
Patch6: bacula-5.2.10-bsmtp.patch
|
||||
|
||||
BuildRequires: desktop-file-utils
|
||||
BuildRequires: perl
|
||||
@ -291,6 +292,7 @@ Provides check_bacula support for Nagios.
|
||||
%patch3 -p1 -b .log-path
|
||||
%patch4 -p0 -b .priv
|
||||
%patch5 -p1 -b .bat-build
|
||||
%patch6 -p0 -b .bsmtp
|
||||
|
||||
# Remove execution permissions from files we're packaging as docs later on
|
||||
find updatedb -type f | xargs chmod -x
|
||||
@ -844,7 +846,8 @@ fi
|
||||
|
||||
%changelog
|
||||
* Tue Jul 10 2012 Simone Caronni <negativo17@gmail.com> - 5.2.10-2
|
||||
- Add nss-lookup.target as required to service filesi (rhbz#838828).
|
||||
- Add nss-lookup.target as required to service files (rhbz#838828).
|
||||
- Fix bsmtp upstream bug sending mails to ipv4/ipv6 hosts.
|
||||
|
||||
* Mon Jul 02 2012 Simone Caronni <negativo17@gmail.com> - 5.2.10-1
|
||||
- Update to 5.2.10.
|
||||
|
Loading…
Reference in New Issue
Block a user