* gnu/packages/mail.scm (dkimproxy)[source]: Add patch. * gnu/packages/patches/dkimproxy-add-ipv6-support.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it.
		
			
				
	
	
		
			75 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From: Tobias Geerinckx-Rice <me@tobias.gr>
 | |
| Date: Fri, 01 Mar 2019 20:51:32 +0100
 | |
| Subject: [PATCH] dkimproxy: Add IPv6 support.
 | |
| 
 | |
| The following patch was copied verbatim from Debian[0].
 | |
| 
 | |
| [0]: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=656041
 | |
| 
 | |
| ---
 | |
| --- dkimproxy-1.4.1.orig/lib/MSDW/SMTP/Server.pm
 | |
| +++ dkimproxy-1.4.1/lib/MSDW/SMTP/Server.pm
 | |
| @@ -11,7 +11,7 @@
 | |
|  # Written by Bennett Todd <bet@rahul.net>
 | |
|  
 | |
|  package MSDW::SMTP::Server;
 | |
| -use IO::Socket;
 | |
| +use IO::Socket::INET6;
 | |
|  use IO::File;
 | |
|  
 | |
|  =head1 NAME
 | |
| @@ -88,14 +88,14 @@
 | |
|  =item new(interface => $interface, port => $port);
 | |
|  
 | |
|  The interface and port to listen on must be specified. The interface
 | |
| -must be a valid numeric IP address (0.0.0.0 to listen on all
 | |
| -interfaces, as usual); the port must be numeric. If this call
 | |
| -succeeds, it returns a server structure with an open
 | |
| -IO::Socket::INET in it, ready to listen on. If it fails it dies, so
 | |
| -if you want anything other than an exit with an explanatory error
 | |
| -message, wrap the constructor call in an eval block and pull the
 | |
| -error out of $@ as usual. This is also the case for all other
 | |
| -methods; they succeed or they die.
 | |
| +must be a valid numeric IPv4 or IPv6 address (0.0.0.0 or :: to listen
 | |
| +on all interfaces, as usual); the port must be numeric. If this call
 | |
| +succeeds, it returns a server structure with an open IO::Socket::INET6
 | |
| +in it, ready to listen on. If it fails it dies, so if you want
 | |
| +anything other than an exit with an explanatory error message, wrap
 | |
| +the constructor call in an eval block and pull the error out of $@ as
 | |
| +usual. This is also the case for all other methods; they succeed or
 | |
| +they die.
 | |
|  
 | |
|  =item accept([debug => FD]);
 | |
|  
 | |
| @@ -154,7 +154,7 @@
 | |
|      my ($this, @opts) = @_;
 | |
|      my $class = ref($this) || $this;
 | |
|      my $self = bless { @opts }, $class;
 | |
| -    $self->{sock} = IO::Socket::INET->new(
 | |
| +    $self->{sock} = IO::Socket::INET6->new(
 | |
|  	LocalAddr => $self->{interface},
 | |
|  	LocalPort => $self->{port},
 | |
|  	Proto => 'tcp',
 | |
| only in patch2:
 | |
| unchanged:
 | |
| --- dkimproxy-1.4.1.orig/scripts/dkimproxy.out
 | |
| +++ dkimproxy-1.4.1/scripts/dkimproxy.out
 | |
| @@ -314,17 +314,11 @@
 | |
|  {
 | |
|  	my $self = shift;
 | |
|  
 | |
| -	# try to determine peer's address
 | |
| -	use Socket;
 | |
| -	my $peersockaddr = getpeername(STDOUT);
 | |
| -	my ($port, $iaddr) = sockaddr_in($peersockaddr);
 | |
| -	$ENV{REMOTE_ADDR} = inet_ntoa($iaddr);
 | |
| -
 | |
|  	# initialize syslog
 | |
|  	eval
 | |
|  	{
 | |
|  		openlog("dkimproxy.out", "perror,pid,ndelay", "mail");
 | |
| -		syslog("debug", '%s', "connect from $ENV{REMOTE_ADDR}");
 | |
| +		syslog("debug", '%s', "connect from $self->{server}->{peeraddr}");
 | |
|  	};
 | |
|  	if (my $E = $@)
 | |
|  	{
 |