Skip to content
Snippets Groups Projects
Commit aeff1f8a authored by Stuart Gathman's avatar Stuart Gathman
Browse files

Skip source route in parseaddr.

parent a7bd7b71
No related branches found
No related tags found
No related merge requests found
## @package Milter.utils
# Miscellaneous functions.
#
import re import re
import struct import struct
import socket import socket
...@@ -11,7 +15,7 @@ ip4re = re.compile(r'^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*$') ...@@ -11,7 +15,7 @@ ip4re = re.compile(r'^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*$')
# from spf.py # from spf.py
def addr2bin(str): def addr2bin(str):
"Convert a string IPv4 address into an unsigned integer." """Convert a string IPv4 address into an unsigned integer."""
return struct.unpack("!L", socket.inet_aton(str))[0] return struct.unpack("!L", socket.inet_aton(str))[0]
MASK = 0xFFFFFFFFL MASK = 0xFFFFFFFFL
...@@ -42,6 +46,10 @@ def iniplist(ipaddr,iplist): ...@@ -42,6 +46,10 @@ def iniplist(ipaddr,iplist):
return True return True
return False return False
## Split email into Fullname and address.
# This replaces <code>email.Utils.parseaddr</code> but fixes
# some <a href="http://bugs.python.org/issue1025395">tricky test cases</a>.
#
def parseaddr(t): def parseaddr(t):
"""Split email into Fullname and address. """Split email into Fullname and address.
...@@ -91,13 +99,24 @@ def parse_addr(t): ...@@ -91,13 +99,24 @@ def parse_addr(t):
['user@bar', 'example.com'] ['user@bar', 'example.com']
>>> parse_addr('foo') >>> parse_addr('foo')
['foo'] ['foo']
>>> parse_addr('@mx.example.com:user@example.com')
['user', 'example.com']
""" """
if t.startswith('<') and t.endswith('>'): t = t[1:-1] if t.startswith('<') and t.endswith('>'): t = t[1:-1]
if t.startswith('"'): if t.startswith('"'):
if t.endswith('"'): return [t[1:-1]] if t.endswith('"'): return [t[1:-1]]
pos = t.find('"@') pos = t.find('"@')
if pos > 0: return [t[1:pos],t[pos+2:]] if pos > 0: return [t[1:pos],t[pos+2:]]
return t.split('@') if t.startswith('@'):
t = t.split(':',1)[1]
return t.rsplit('@',1)
## Decode headers gratuitously encoded to hide the content.
# Spammers often encode headers to obscure the content from
# spam filters. This function decodes gratuitously encoded
# headers.
# @param val the raw header value
# @return the decoded value or the original raw value
def parse_header(val): def parse_header(val):
"""Decode headers gratuitously encoded to hide the content. """Decode headers gratuitously encoded to hide the content.
......
...@@ -83,6 +83,9 @@ chmod a+x $RPM_BUILD_ROOT%{libdir}/start.sh ...@@ -83,6 +83,9 @@ chmod a+x $RPM_BUILD_ROOT%{libdir}/start.sh
rm -rf $RPM_BUILD_ROOT rm -rf $RPM_BUILD_ROOT
%changelog %changelog
* Thu Jul 02 2009 Stuart Gathman <stuart@bmsi.com> 0.9.3-1
- Handle source route in Milter.util.parse_addr()
* Tue Jun 02 2009 Stuart Gathman <stuart@bmsi.com> 0.9.2-3 * Tue Jun 02 2009 Stuart Gathman <stuart@bmsi.com> 0.9.2-3
- Change result of @noreply callbacks to NOREPLY when so negotiated. - Change result of @noreply callbacks to NOREPLY when so negotiated.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment