pymilter  0.9.8
Functions | Variables
Milter.utils Namespace Reference

Miscellaneous functions. More...

Functions

def addr2bin
 
def bin2long6
 
def inet_ntop
 
def inet_pton
 
def cidr
 
def iniplist
 
def parseaddr
 Split email into Fullname and address. More...
 
def parse_addr
 
def parse_header
 Decode headers gratuitously encoded to hide the content. More...
 

Variables

string PAT_IP4 = r'\.'
 
tuple ip4re = re.compile(PAT_IP4+'$')
 
tuple ip6re
 
int MASK = 0xFFFFFFFFL
 
int MASK6 = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFL
 

Detailed Description

Miscellaneous functions.

Function Documentation

def Milter.utils.addr2bin (   s)
Convert a string IPv4 address into an unsigned integer.

References Milter.utils.bin2long6().

Referenced by Milter.utils.iniplist().

def Milter.utils.bin2long6 (   s)
Convert binary IP6 address into an unsigned Python long integer.

Referenced by Milter.utils.addr2bin(), and Milter.utils.iniplist().

def Milter.utils.iniplist (   ipaddr,
  iplist 
)
Return whether ip is in cidr list
>>> iniplist('66.179.26.146',['127.0.0.1','66.179.26.128/26'])
True
>>> iniplist('127.0.0.1',['127.0.0.1','66.179.26.128/26'])
True
>>> iniplist('192.168.0.45',['192.168.0.*'])
True
>>> iniplist('2001:610:779:0:223:6cff:fe9a:9cf3',['127.0.0.1','172.20.1.0/24','2001:610:779::/48'])
True
>>> iniplist('2G01:610:779:0:223:6cff:fe9a:9cf3',['127.0.0.1','172.20.1.0/24','2001:610:779::/48'])
Traceback (most recent call last):
  ...
ValueError: Invalid ip syntax:2G01:610:779:0:223:6cff:fe9a:9cf3

References Milter.utils.addr2bin(), and Milter.utils.bin2long6().

def Milter.utils.parse_addr (   t)
Split email into user,domain.

>>> parse_addr('user@example.com')
['user', 'example.com']
>>> parse_addr('"user@example.com"')
['user@example.com']
>>> parse_addr('"user@bar"@example.com')
['user@bar', 'example.com']
>>> parse_addr('foo')
['foo']
>>> parse_addr('@mx.example.com:user@example.com')
['user', 'example.com']
>>> parse_addr('@user@example.com')
['@user', 'example.com']
def Milter.utils.parse_header (   val)

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.

Parameters
valthe raw header value
Returns
the decoded value or the original raw value
Decode headers gratuitously encoded to hide the content.
def Milter.utils.parseaddr (   t)

Split email into Fullname and address.

This replaces email.Utils.parseaddr but fixes some tricky test cases.

Split email into Fullname and address.

>>> parseaddr('user@example.com')
('', 'user@example.com')
>>> parseaddr('"Full Name" <foo@example.com>')
('Full Name', 'foo@example.com')
>>> parseaddr('spam@spammer.com <foo@example.com>')
('spam@spammer.com', 'foo@example.com')
>>> parseaddr('God@heaven <@hop1.org,@hop2.net:jeff@spec.org>')
('God@heaven', 'jeff@spec.org')
>>> parseaddr('Real Name ((comment)) <addr...@example.com>')
('Real Name', 'addr...@example.com')
>>> parseaddr('a(WRONG)@b')
('WRONG', 'a@b')

Variable Documentation

tuple Milter.utils.ip6re
Initial value:
1 = re.compile( '(?:%(hex4)s:){6}%(ls32)s$'
2  '|::(?:%(hex4)s:){5}%(ls32)s$'
3  '|(?:%(hex4)s)?::(?:%(hex4)s:){4}%(ls32)s$'
4  '|(?:(?:%(hex4)s:){0,1}%(hex4)s)?::(?:%(hex4)s:){3}%(ls32)s$'
5  '|(?:(?:%(hex4)s:){0,2}%(hex4)s)?::(?:%(hex4)s:){2}%(ls32)s$'
6  '|(?:(?:%(hex4)s:){0,3}%(hex4)s)?::%(hex4)s:%(ls32)s$'
7  '|(?:(?:%(hex4)s:){0,4}%(hex4)s)?::%(ls32)s$'
8  '|(?:(?:%(hex4)s:){0,5}%(hex4)s)?::%(hex4)s$'
9  '|(?:(?:%(hex4)s:){0,6}%(hex4)s)?::$'
10  % {
11  'ls32': r'(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|%s)'%PAT_IP4,
12  'hex4': r'[0-9a-f]{1,4}'
13  }, re.IGNORECASE)