diff --git a/dkim/__init__.py b/dkim/__init__.py index 36d6fb0..3c225f2 100644 --- a/dkim/__init__.py +++ b/dkim/__init__.py @@ -171,14 +171,26 @@ def validate_signature_fields(sig): "l= value is not a decimal integer (%s)" % sig[b'l']) if b'q' in sig and sig[b'q'] != b"dns/txt": raise ValidationError("q= value is not dns/txt (%s)" % sig[b'q']) - if b't' in sig and re.match(br"\d+$", sig[b't']) is None: - raise ValidationError( - "t= value is not a decimal integer (%s)" % sig[b't']) + now = int(time.time()) + slop = 36000 # 10H leeway for mailers with inaccurate clocks + t_sign = 0 + if b't' in sig + if re.match(br"\d+$", sig[b't']) is None: + raise ValidationError( + "t= value is not a decimal integer (%s)" % sig[b't']) + t_sign = int(sig[b't']) + if t_sign > now + slop: + raise ValidationError( + "t= value is in the future (%s)" % sig[b't']) if b'x' in sig: if re.match(br"\d+$", sig[b'x']) is None: raise ValidationError( "x= value is not a decimal integer (%s)" % sig[b'x']) - if int(sig[b'x']) < int(sig[b't']): + x_sign = int(sig[b'x']) + if x_sign < now - slop: + raise ValidationError( + "x= value is past (%s)" % sig[b'x']) + if x_sign < t_sign: raise ValidationError( "x= value is less than t= value (x=%s t=%s)" % (sig[b'x'], sig[b't'])) diff --git a/packaging/pydkim.spec b/packaging/pydkim.spec index 52d9a9b..f749c66 100644 --- a/packaging/pydkim.spec +++ b/packaging/pydkim.spec @@ -1,11 +1,12 @@ %define __python python2.6 -%define pythonbase python26 +%define pythonbase python Summary: Python DKIM library Name: %{pythonbase}-pydkim -Version: 0.5.3 +Version: 0.5.4 Release: 1 Source0: http://hewgill.com/pydkim/pydkim-%{version}.tar.bz2 +Patch: pydkim.patch License: BSD-like Group: Development/Libraries BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot @@ -27,9 +28,10 @@ Python DKIM library %{__python} setup.py build %install +rm -rf $RPM_BUILD_ROOT %{__python} setup.py install --root=$RPM_BUILD_ROOT --record=INSTALLED_FILES sed -i -e'/man1/d' INSTALLED_FILES -#grep '\.pyc$' INSTALLED_FILE | sed -e's/c$/o/' >>INSTALLED_FILES +#grep '\.pyc$' INSTALLED_FILES | sed -e's/c$/o/' >>INSTALLED_FILES mkdir -p ${RPM_BUILD_ROOT}%{_mandir}/man1 cp -p man/*.1 ${RPM_BUILD_ROOT}%{_mandir}/man1 @@ -41,7 +43,7 @@ rm -rf $RPM_BUILD_ROOT %doc ChangeLog README LICENSE TODO %{_mandir}/man1/dkimsign.1.gz %{_mandir}/man1/dkimverify.1.gz -/usr/lib/%{__python}/site-packages/dkim/__main__.pyo +#/usr/lib/%{__python}/site-packages/dkim/__main__.pyo %changelog * Sat Apr 21 2012 Stuart Gathman 0.5.3-1