#revision 1.4: 24/Jan/2011 If /^Received-SPF:/ /[^a-z\d\!\#\$\%\&\'\*\+\/\-\=\?\^\_\{\}\|\~\`\.\;\<\>\(\)\ \@\:]/ REJECT bad header syntax /^Received-SPF:[# ]Pass \([a-z\d\-\.]{1,61}\.[a-z]{2,4}\.?: domain of [a-z\d\!\#\$\%\&\'\*\+\/\-\=\?\^\_\{\}\|\~\`\.]{1,64}(@?|%40)[a-z\d\-\.]{1,61}\.[a-z]{2,4}\.? designates (25[0-4]|2[0-4]\d|1\d\d|[1-9]\d|[1-9])\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.(25[0-4]|2[0-4]\d|1\d\d|[1-9]\d|[1-9]) as permitted sender\)( receiver=[a-z\d\-\.]{1,61}\.[a-z]{2,4}\.?;)? client[-_]ip=(25[0-4]|2[0-4]\d|1\d\d|[1-9]\d|[1-9])\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.(25[0-4]|2[0-4]\d|1\d\d|[1-9]\d|[1-9]);( envelope[-_]from=?;)?( helo=[a-z\d\-\.]{1,64};)?$/ OK /^Received-SPF:[# ]SoftFail \([a-z\d\-\.]{1,61}\.[a-z]{2,4}\.?: (transitioning domain of|domain of transitioning) [a-z\d\!\#\$\%\&\'\*\+\/\-\=\?\^\_\{\}\|\~\`\.]{1,64}(@?|%40)[a-z\d\-\.]{1,61}\.[a-z]{2,4}\.? does not designate (25[0-4]|2[0-4]\d|1\d\d|[1-9]\d|[1-9])\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.(25[0-4]|2[0-4]\d|1\d\d|[1-9]\d|[1-9]) as permitted sender\)( receiver=[a-z\d\-\.]{1,61}\.[a-z]{2,4}\.?;)? client[-_]ip=(25[0-4]|2[0-4]\d|1\d\d|[1-9]\d|[1-9])\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.(25[0-4]|2[0-4]\d|1\d\d|[1-9]\d|[1-9]);( envelope[-_]from=?;)?( helo=[a-z\d\-\.]{1,64};)?$/ OK /^Received-SPF:[# ](Neutral|None) \([a-z\d\-\.]{1,61}\.[a-z]{2,4}\.?: (25[0-4]|2[0-4]\d|1\d\d|[1-9]\d|[1-9])\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.(25[0-4]|2[0-4]\d|1\d\d|[1-9]\d|[1-9]) is neither permitted nor denied by (best guess record for )?domain of [a-z\d\!\#\$\%\&\'\*\+\/\-\=\?\^\_\{\}\|\~\`\.]{1,64}(@?|%40)[a-z\d\-\.]{1,61}\.[a-z]{2,4}\.?\)( receiver=[a-z\d\-\.]{1,61}\.[a-z]{2,4}\.?;)? client[-_]ip=(25[0-4]|2[0-4]\d|1\d\d|[1-9]\d|[1-9])\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.(25[0-4]|2[0-4]\d|1\d\d|[1-9]\d|[1-9]);( envelope[-_]from=?;)?( helo=[a-z\d\-\.]{1,64};)?$/ OK /^Received-SPF:[# ]None \([a-z\d\-\.]{1,61}\.[a-z]{2,4}\.?: domain of [a-z\d\!\#\$\%\&\'\*\+\/\-\=\?\^\_\{\}\|\~\`\.]{1,64}(@?|%40)[a-z\d\-\.]{1,61}\.[a-z]{2,4}\.? does not designate permitted sender hosts\)( receiver=[a-z\d\-\.]{1,61}\.[a-z]{2,4}\.?;)? client[-_]ip=(25[0-4]|2[0-4]\d|1\d\d|[1-9]\d|[1-9])\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.(25[0-4]|2[0-4]\d|1\d\d|[1-9]\d|[1-9]);( envelope[-_]from=?;)?( helo=[a-z\d\-\.]{1,64};)?$/ OK /^Received-SPF:[# ]TempError \([a-z\d\-\.]{1,61}\.[a-z]{2,4}\.?: error in processing during lookup of [a-z\d\!\#\$\%\&\'\*\+\/\-\=\?\^\_\{\}\|\~\`\.]{1,64}(@?|%40)[a-z\d\-\.]{1,61}\.[a-z]{2,4}\.?: DNS timeout\)( receiver=[a-z\d\-\.]{1,61}\.[a-z]{2,4}\.?;)? client[-_]ip=(25[0-4]|2[0-4]\d|1\d\d|[1-9]\d|[1-9])\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.(25[0-4]|2[0-4]\d|1\d\d|[1-9]\d|[1-9]);( envelope[-_]from=?;)?( helo=[a-z\d\-\.]{1,64};)?$/ OK // REJECT bad header syntax EndIf