Mailing List Archive

ANNOUNCE: Mail::SPF::Query 1.992 and 1.993 released with Caller-ID support
On Wed, Feb 25, 2004 at 01:34:05PM +0100, Ernesto Baschny wrote:
|
| Being in the perl-mood, here is the same stuff in form of a perl module,
| which can be used from other scripts:
|
| http://www.baschny.de/spf/LMAP-CID2SPF-0.9.tar.gz
|
| This also includes the cid2spf script, so this will be the thing
| that I will be maintaining. Should install with the standard
| "perl Makefile.PL; make; make test; make install" procedure.
|

Mail::SPF::Query version 1.992 has been released; it fixes a couple of
minor bugs and adds support for "fallback" and "override" functionality.

"fallback" lets you pretend a domain has an SPF record.

"override" lets you override a domain's existing SPF record.

http://spf.pobox.com/Mail-SPF-Query-1.992.tar.gz

* * *

Mail::SPF::Query version 1.993 has been released; it adds support for
Caller-ID lookups. You will need Expat, XML::Parser, and LMAP::CID2SPF
from http://www.baschny.de/spf/LMAP-CID2SPF-0.9.tar.gz (note that the
CID2SPF module name may change in the future; experiment at your own risk.)

Caller-ID may be a patented technology and you may require a license
from Microsoft to use it. If this worries you, you should download
version 1.992 instead.

Much of Caller-ID's mail server declaration syntax can be translated
into a subset of SPF. Caller-ID is described in detail at
http://www.microsoft.com/mscorp/twc/privacy/spam_callerid.mspx

The following output demonstrates a lookup against Hotmail.com.

20040225-23:28:48 mengwong@dumbo:~% perl -MMail::SPF::Query -le 'my $query = Mail::SPF::Query->new(ipv4=>$ARGV[0], helo=>$ARGV[1], sender=>$ARGV[2], debug=>0); print "result: $_" for $query->result;' 131.107.8.12 helo.example.com mengwong@hotmail.com
result: pass
result: Please see http://spf.pobox.com/why.html?sender=mengwong%40hotmail.com&ip=131.107.8.12&receiver=dumbo.pobox.com: 131.107.0.0/16 contains 131.107.8.12
result: dumbo.pobox.com: domain of mengwong@hotmail.com designates 131.107.8.12 as permitted sender
result: v=spf1 include:_ep.list1._ep.hotmail.com include:_ep.list2._ep.hotmail.com include:_ep.list3._ep.hotmail.com ?all


20040225-23:28:55 mengwong@dumbo:~% perl -MMail::SPF::Query -le 'my $query = Mail::SPF::Query->new(ipv4=>$ARGV[0], helo=>$ARGV[1], sender=>$ARGV[2], debug=>1); print "result: $_" for $query->result;' 131.107.8.12 helo.example.com mengwong@hotmail.com
| hotmail.com new: ipv4=131.107.8.12, sender@ΠõæTCì¤ê(Ÿ2Ø, helo=helo.example.com
| mengwong hotmail.com localpart is mengwong
| mengwong hotmail.com DirectiveSet->new(): doing TXT query on hotmail.com
| mengwong hotmail.com myquery: doing TXT query on hotmail.com
| mengwong hotmail.com DirectiveSet->new(): TXT query on hotmail.com returned error=, last_dns_error=
| mengwong hotmail.com DirectiveSet->new(): will try fallbacks.
| mengwong hotmail.com DirectiveSet->new(): fallback search failed.
| mengwong hotmail.com DirectiveSet->new(): doing TXT query on _ep.hotmail.com
| mengwong hotmail.com myquery: doing TXT query on _ep.hotmail.com
| mengwong hotmail.com DirectiveSet->new(): TXT query on hotmail.com returned error=, last_dns_error=NOERROR
| mengwong hotmail.com CID2SPF: in: <ep xmlns='http://ms.net/1' testing='true'><out><m><indirect>list1._ep.hotmail.com</indirect><indirect>list2._ep.hotmail.com</indirect><indirect>list3._ep.hotmail.com</indirect></m></out></ep>
| mengwong hotmail.com CID2SPF: out: v=spf1 include:_ep.list1._ep.hotmail.com include:_ep.list2._ep.hotmail.com include:_ep.list3._ep.hotmail.com ?all
| mengwong hotmail.com DirectiveSet->new(): SPF policy: include:_ep.list1._ep.hotmail.com include:_ep.list2._ep.hotmail.com include:_ep.list3._ep.hotmail.com ?all
| mengwong hotmail.com lookup: TXT include:_ep.list1._ep.hotmail.com include:_ep.list2._ep.hotmail.com include:_ep.list3._ep.hotmail.com ?all
| mengwong hotmail.com lookup: TXT prefix=+, lhs=include, rhs=_ep.list1._ep.hotmail.com
| mengwong hotmail.com lookup: TXT prefix=+, lhs=include, rhs=_ep.list2._ep.hotmail.com
| mengwong hotmail.com lookup: TXT prefix=+, lhs=include, rhs=_ep.list3._ep.hotmail.com
| mengwong hotmail.com lookup: TXT prefix=?, lhs=all, rhs=
| mengwong hotmail.com lookup: mec mechanisms=+include(_ep.list1._ep.hotmail.com) +include(_ep.list2._ep.hotmail.com) +include(_ep.list3._ep.hotmail.com) ?all()
| mengwong hotmail.com evaluate_mechanism: +include(_ep.list1._ep.hotmail.com) for domain=hotmail.com
| mengwong hotmail.com mechanism include: recursing into _ep.list1._ep.hotmail.com
| mengwong hotmail.com clone: new object:
|| mengwong _ep.list1._ep.hotmail.com clone: parent = Mail::SPF::Query=HASH(0x80f001c)
|| mengwong _ep.list1._ep.hotmail.com clone: ipv4 = 131.107.8.12
|| mengwong _ep.list1._ep.hotmail.com clone: helo = helo.example.com
|| mengwong _ep.list1._ep.hotmail.com clone: lookup_count = 1
|| mengwong _ep.list1._ep.hotmail.com clone: default_explanation = Please see http://spf.pobox.com/why.html?sender=%{S}&ip=%{I}&receiver=%{xR}
|| mengwong _ep.list1._ep.hotmail.com clone: loop_report = ARRAY(0x8303ba4)
|| mengwong _ep.list1._ep.hotmail.com clone: spf_source = domain of mengwong@hotmail.com
|| mengwong _ep.list1._ep.hotmail.com clone: directive_set = DirectiveSet=HASH(0x8393fa4)
|| mengwong _ep.list1._ep.hotmail.com clone: domain = _ep.list1._ep.hotmail.com
|| mengwong _ep.list1._ep.hotmail.com clone: trusted =
|| mengwong _ep.list1._ep.hotmail.com clone: debug = 1
|| mengwong _ep.list1._ep.hotmail.com clone: guess =
|| mengwong _ep.list1._ep.hotmail.com clone: last_dns_error = NOERROR
|| mengwong _ep.list1._ep.hotmail.com clone: localpart = mengwong
|| mengwong _ep.list1._ep.hotmail.com clone: spf_error_explanation = SPF record error
|| mengwong _ep.list1._ep.hotmail.com clone: default_record =
|| mengwong _ep.list1._ep.hotmail.com clone: depth = 1
|| mengwong _ep.list1._ep.hotmail.com clone: orig_domain = hotmail.com
|| mengwong _ep.list1._ep.hotmail.com clone: res = Net::DNS::Resolver=HASH(0x80fabc8)
|| mengwong _ep.list1._ep.hotmail.com clone: myhostname = dumbo.pobox.com
|| mengwong _ep.list1._ep.hotmail.com clone: local =
|| mengwong _ep.list1._ep.hotmail.com clone: Reversed_IP = 12.8.107.131
|| mengwong _ep.list1._ep.hotmail.com clone: sanitize = CODE(0x8329ca4)
|| mengwong _ep.list1._ep.hotmail.com clone: sender = mengwong@hotmail.com
|| mengwong _ep.list1._ep.hotmail.com DirectiveSet->new(): doing TXT query on _ep._ep.list1._ep.hotmail.com
|| mengwong _ep.list1._ep.hotmail.com myquery: doing TXT query on _ep.list1._ep.hotmail.com
|| mengwong _ep.list1._ep.hotmail.com DirectiveSet->new(): TXT query on _ep.list1._ep.hotmail.com returned error=, last_dns_error=NOERROR
|| mengwong _ep.list1._ep.hotmail.com CID2SPF: in: <ep xmlns='http://ms.net/1' testing='true'><out><m><r>209.240.192.0/19</r><r>65.52.0.0/14</r><r>131.107.0.0/16</r><r>157.54.0.0/15</r><r>157.56.0.0/14</r><r>157.60.0.0/16</r><r>167.220.0.0/16</r><r>204.79.135.0/24</r><r>204.79.188.0/24</r><r>204.79.252.0/24</r><r>207.46.0.0/16</r><r>199.2.137.0/24</r><r>199.103.90.0/23</r></m></out></ep>
|| mengwong _ep.list1._ep.hotmail.com CID2SPF: out: v=spf1 ip4:209.240.192.0/19 ip4:65.52.0.0/14 ip4:131.107.0.0/16 ip4:157.54.0.0/15 ip4:157.56.0.0/14 ip4:157.60.0.0/16 ip4:167.220.0.0/16 ip4:204.79.135.0/24 ip4:204.79.188.0/24 ip4:204.79.252.0/24 ip4:207.46.0.0/16 ip4:199.2.137.0/24 ip4:199.103.90.0/23 ?all
|| mengwong _ep.list1._ep.hotmail.com DirectiveSet->new(): SPF policy: ip4:209.240.192.0/19 ip4:65.52.0.0/14 ip4:131.107.0.0/16 ip4:157.54.0.0/15 ip4:157.56.0.0/14 ip4:157.60.0.0/16 ip4:167.220.0.0/16 ip4:204.79.135.0/24 ip4:204.79.188.0/24 ip4:204.79.252.0/24 ip4:207.46.0.0/16 ip4:199.2.137.0/24 ip4:199.103.90.0/23 ?all
|| mengwong _ep.list1._ep.hotmail.com lookup: TXT ip4:209.240.192.0/19 ip4:65.52.0.0/14 ip4:131.107.0.0/16 ip4:157.54.0.0/15 ip4:157.56.0.0/14 ip4:157.60.0.0/16 ip4:167.220.0.0/16 ip4:204.79.135.0/24 ip4:204.79.188.0/24 ip4:204.79.252.0/24 ip4:207.46.0.0/16 ip4:199.2.137.0/24 ip4:199.103.90.0/23 ?all
|| mengwong _ep.list1._ep.hotmail.com lookup: TXT prefix=+, lhs=ip4, rhs=209.240.192.0/19
|| mengwong _ep.list1._ep.hotmail.com lookup: TXT prefix=+, lhs=ip4, rhs=65.52.0.0/14
|| mengwong _ep.list1._ep.hotmail.com lookup: TXT prefix=+, lhs=ip4, rhs=131.107.0.0/16
|| mengwong _ep.list1._ep.hotmail.com lookup: TXT prefix=+, lhs=ip4, rhs=157.54.0.0/15
|| mengwong _ep.list1._ep.hotmail.com lookup: TXT prefix=+, lhs=ip4, rhs=157.56.0.0/14
|| mengwong _ep.list1._ep.hotmail.com lookup: TXT prefix=+, lhs=ip4, rhs=157.60.0.0/16
|| mengwong _ep.list1._ep.hotmail.com lookup: TXT prefix=+, lhs=ip4, rhs=167.220.0.0/16
|| mengwong _ep.list1._ep.hotmail.com lookup: TXT prefix=+, lhs=ip4, rhs=204.79.135.0/24
|| mengwong _ep.list1._ep.hotmail.com lookup: TXT prefix=+, lhs=ip4, rhs=204.79.188.0/24
|| mengwong _ep.list1._ep.hotmail.com lookup: TXT prefix=+, lhs=ip4, rhs=204.79.252.0/24
|| mengwong _ep.list1._ep.hotmail.com lookup: TXT prefix=+, lhs=ip4, rhs=207.46.0.0/16
|| mengwong _ep.list1._ep.hotmail.com lookup: TXT prefix=+, lhs=ip4, rhs=199.2.137.0/24
|| mengwong _ep.list1._ep.hotmail.com lookup: TXT prefix=+, lhs=ip4, rhs=199.103.90.0/23
|| mengwong _ep.list1._ep.hotmail.com lookup: TXT prefix=?, lhs=all, rhs=
|| mengwong _ep.list1._ep.hotmail.com lookup: mec mechanisms=+ip4(209.240.192.0/19) +ip4(65.52.0.0/14) +ip4(131.107.0.0/16) +ip4(157.54.0.0/15) +ip4(157.56.0.0/14) +ip4(157.60.0.0/16) +ip4(167.220.0.0/16) +ip4(204.79.135.0/24) +ip4(204.79.188.0/24) +ip4(204.79.252.0/24) +ip4(207.46.0.0/16) +ip4(199.2.137.0/24) +ip4(199.103.90.0/23) ?all()
|| mengwong _ep.list1._ep.hotmail.com evaluate_mechanism: +ip4(209.240.192.0/19) for domain=_ep.list1._ep.hotmail.com
|| mengwong _ep.list1._ep.hotmail.com mechanism ip4: looking for 131.107.8.12 in 209.240.192.0/19
|| mengwong _ep.list1._ep.hotmail.com evaluate_mechanism: +ip4(209.240.192.0/19) returned
|| mengwong _ep.list1._ep.hotmail.com evaluate_mechanism: +ip4(65.52.0.0/14) for domain=_ep.list1._ep.hotmail.com
|| mengwong _ep.list1._ep.hotmail.com mechanism ip4: looking for 131.107.8.12 in 65.52.0.0/14
|| mengwong _ep.list1._ep.hotmail.com evaluate_mechanism: +ip4(65.52.0.0/14) returned
|| mengwong _ep.list1._ep.hotmail.com evaluate_mechanism: +ip4(131.107.0.0/16) for domain=_ep.list1._ep.hotmail.com
|| mengwong _ep.list1._ep.hotmail.com mechanism ip4: looking for 131.107.8.12 in 131.107.0.0/16
|| mengwong _ep.list1._ep.hotmail.com evaluate_mechanism: +ip4(131.107.0.0/16) returned hit 131.107.0.0/16 contains 131.107.8.12
|| mengwong _ep.list1._ep.hotmail.com saving result pass to cache point and returning.
|| mengwong _ep.list1._ep.hotmail.com macro_substitute_item: S: field=S, num=, reverse=, delim=., newval=mengwong%40hotmail.com
|| mengwong _ep.list1._ep.hotmail.com macro_substitute_item: I: field=I, num=, reverse=, delim=., newval=131.107.8.12
|| mengwong _ep.list1._ep.hotmail.com macro_substitute_item: xR: field=xR, num=, reverse=, delim=., newval=dumbo.pobox.com
|| mengwong _ep.list1._ep.hotmail.com macro_substitute: Please see http://spf.pobox.com/why.html?sender=%{S}&ip=%{I}&receiver=%{xR} -> Please see http://spf.pobox.com/why.html?sender=mengwong%40hotmail.com&ip=131.107.8.12&receiver=dumbo.pobox.com
| mengwong hotmail.com mechanism include: got back result pass / 131.107.0.0/16 contains 131.107.8.12 /
| mengwong hotmail.com evaluate_mechanism: +include(_ep.list1._ep.hotmail.com) returned hit 131.107.0.0/16 contains 131.107.8.12
| mengwong hotmail.com saving result pass to cache point and returning.
| mengwong hotmail.com macro_substitute_item: S: field=S, num=, reverse=, delim=., newval=mengwong%40hotmail.com
| mengwong hotmail.com macro_substitute_item: I: field=I, num=, reverse=, delim=., newval=131.107.8.12
| mengwong hotmail.com macro_substitute_item: xR: field=xR, num=, reverse=, delim=., newval=dumbo.pobox.com
| mengwong hotmail.com macro_substitute: Please see http://spf.pobox.com/why.html?sender=%{S}&ip=%{I}&receiver=%{xR} -> Please see http://spf.pobox.com/why.html?sender=mengwong%40hotmail.com&ip=131.107.8.12&receiver=dumbo.pobox.com
result: pass
result: Please see http://spf.pobox.com/why.html?sender=mengwong%40hotmail.com&ip=131.107.8.12&receiver=dumbo.pobox.com: 131.107.0.0/16 contains 131.107.8.12
result: dumbo.pobox.com: domain of mengwong@hotmail.com designates 131.107.8.12 as permitted sender
result: v=spf1 include:_ep.list1._ep.hotmail.com include:_ep.list2._ep.hotmail.com include:_ep.list3._ep.hotmail.com ?all

-------
To unsubscribe, change your address, or temporarily deactivate your subscription,
please go to http://v2.listbox.com/member/?listname@Ë`Ì{5¤¨wâÇSÓ°)h
Re: ANNOUNCE: Mail::SPF::Query 1.992 and 1.993 released with Caller-ID support [ In reply to ]
----- Original Message -----
From: "Meng Weng Wong" <mengwong@dumbo.pobox.com>
To: <spf-discuss@v2.listbox.com>; <spf-devel@v2.listbox.com>
Sent: Thursday, February 26, 2004 5:37 AM
Subject: [spf-devel] ANNOUNCE: Mail::SPF::Query 1.992 and 1.993 released
with Caller-ID support


> Mail::SPF::Query version 1.993 has been released; it adds support
> for Caller-ID lookups. You will need Expat, XML::Parser, and
> LMAP::CID2SPF from
> http://www.baschny.de/spf/LMAP-CID2SPF-0.9.tar.gz (note that the
> CID2SPF module name may change in the future; experiment
> at your own risk.)

Meng, this is absolutely brilliant. :) Thank you very much!

Do I understand things correctly, from your example, that the CID "fallback"
lookup will be made by default, when no SPF (TXT) record is present?

- Mark

System Administrator Asarian-host.org

---
"If you were supposed to understand it,
we wouldn't call it code." - FedEx

-------
To unsubscribe, change your address, or temporarily deactivate your subscription,
please go to http://v2.listbox.com/member/?listname@Ë`Ì{5¤¨wâÇSÓ°)h
Re: ANNOUNCE: Mail::SPF::Query 1.992 and 1.993 released with Caller-ID support [ In reply to ]
On Thu, Feb 26, 2004 at 09:51:03AM +0000, Mark wrote:
|
| Do I understand things correctly, from your example, that the CID "fallback"
| lookup will be made by default, when no SPF (TXT) record is present?
|

Yes, that it is what it does.


-------
To unsubscribe, change your address, or temporarily deactivate your subscription,
please go to http://v2.listbox.com/member/?listname@Ë`Ì{5¤¨wâÇSÓ°)h
RE: ANNOUNCE: Mail::SPF::Query 1.992 and 1.993 released with Caller-ID support [ In reply to ]
Meng Weng Wong [mengwong@dumbo.pobox.com] wrote:
> On Thu, Feb 26, 2004 at 09:51:03AM +0000, Mark wrote:
> > Do I understand things correctly, from your example, that the CID
> > "fallback" lookup will be made by default, when no SPF (TXT) record
> > is present?
>
> Yes, that it is what it does.

Can we **please** have an option to turn it off? I suggest:

| Set fallback_ms_caller_id=>0 to disable the fallback to using Microsoft
| Caller-ID records.

-------
To unsubscribe, change your address, or temporarily deactivate your subscription,
please go to http://v2.listbox.com/member/?listname@Ï#ÄÏÉæGã!'Rzš´ˆ»£‡Æ~3com
Re: RE: ANNOUNCE: Mail::SPF::Query 1.992 and 1.993 released with Caller-ID support [ In reply to ]
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


Julian Mehnle writes:
>Meng Weng Wong [mengwong@dumbo.pobox.com] wrote:
>> On Thu, Feb 26, 2004 at 09:51:03AM +0000, Mark wrote:
>> > Do I understand things correctly, from your example, that the CID
>> > "fallback" lookup will be made by default, when no SPF (TXT) record
>> > is present?
>>
>> Yes, that it is what it does.
>
>Can we **please** have an option to turn it off? I suggest:
>
>| Set fallback_ms_caller_id=>0 to disable the fallback to using Microsoft
>| Caller-ID records.

agreed!

I'd be very concerned about the speed overhead of falling back to
a Caller-ID lookup after the SPF lookup fails.

- --j.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)
Comment: Exmh CVS

iD8DBQFAP31JQTcbUG5Y7woRAu3WAKCIoYlbD235OGf4t/47JUkublwDUgCgzC+5
ZaEScfSPYZYSYWM8B4aUswk=
=VG0Q
-----END PGP SIGNATURE-----

-------
To unsubscribe, change your address, or temporarily deactivate your subscription,
please go to http://v2.listbox.com/member/?listname@Ë`Ì{5¤¨wâÇSÓ°)h
Re: RE: ANNOUNCE: Mail::SPF::Query 1.992 and 1.993 released with Caller-ID support [ In reply to ]
On Fri, Feb 27, 2004 at 09:24:25AM -0800, Justin Mason wrote:
| >
| >Can we **please** have an option to turn it off? I suggest:
| >
| >| Set fallback_ms_caller_id=>0 to disable the fallback to using Microsoft
| >| Caller-ID records.
|
| agreed!
|
| I'd be very concerned about the speed overhead of falling back to
| a Caller-ID lookup after the SPF lookup fails.

I can do it! I will do it! Nine times!

please stay tuned.

In other news I went and read NANAE's latest threads about Caller-ID and SPF.

i get the impression from reading these threads that if i were to post
on NANAE "hi, my name is meng and i think kittens are cute" i'd spark a
200 message thread to prove me wrong.

along the way we would see arguments like

"but when i was 4 years old i got bitten by a puppy"

"are you talking about normal cat kittens or jaguar kittens? because
jaguar kittens grow up into jaguars, which are dangerous animals and can
kill you; however, as long as you stay out of the amazon basin you
should be reasonably safe"

"mittens are great, they keep my hands warm when it's cold, but they
lack the flexibility of proper finger gloves"


-------
To unsubscribe, change your address, or temporarily deactivate your subscription,
please go to http://v2.listbox.com/member/?listname@Ë`Ì{5¤¨wâÇSÓ°)h
Re: RE: ANNOUNCE: Mail::SPF::Query 1.992 and 1.993 released with Caller-ID support [ In reply to ]
On Fri, 2004-02-27 at 09:30, Meng Weng Wong wrote:
> In other news I went and read NANAE's latest threads about Caller-ID and SPF.
>
> i get the impression from reading these threads that if i were to post
> on NANAE "hi, my name is meng and i think kittens are cute" i'd spark a
> 200 message thread to prove me wrong.
>
> along the way we would see arguments like
>
> "but when i was 4 years old i got bitten by a puppy"
>
> "are you talking about normal cat kittens or jaguar kittens? because
> jaguar kittens grow up into jaguars, which are dangerous animals and can
> kill you; however, as long as you stay out of the amazon basin you
> should be reasonably safe"
>
> "mittens are great, they keep my hands warm when it's cold, but they
> lack the flexibility of proper finger gloves"

I have this to say:

http://moscow.6o4.ca/images/karate_kat.gif

And I really hate to be the one to say it, but also this:

http://moscow.6o4.ca/images/arguing-spf.jpg

Confucious has been heard to have said that pictures are worth a
thousand words ;)

Cheers,

James

--
James Couzens,
Programmer
-----------------------------------------------------------------
http://libspf.org -- ANSI C Sender Policy Framework library
http://libsrs.org -- ANSI C Sender Rewriting Scheme library
-----------------------------------------------------------------
PGP: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0xBD3BF855

-------
To unsubscribe, change your address, or temporarily deactivate your subscription,
please go to http://v2.listbox.com/member/?listname@Ï#ÄÏÉæGã!'Rzš´ˆ»£‡Æ~3com