SPF: Difference between v=spf1 include:_spf.google.com ~all and v=spf1 include:spf.google.com ~all

Solution 1:

spf.google.com doesn't exist, while _spf.google.com contains a valid SPF record.

In other words: only the first line will actually work (as of now).

If you search DNS for _spf.google.com you get the following result:

_spf.google.com IN TXT v=spf1 include:_netblocks.google.com include:_netblocks2.google.com include:_netblocks3.google.com ~all

Google is using the _underscore addresses to hold particular DNS records. There is no particular significance to the character choice; it's just their naming convention.