<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="http://feeds.feedburner.com/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><atom:feed xmlns:atom="http://www.w3.org/2005/Atom">
	<atom:title>Dave Cardwell: UK Perl Programmer</atom:title>
	<atom:id>http://perlprogrammer.co.uk/</atom:id>
	<atom:updated>2007-03-07T03:45:00Z</atom:updated>
	
	
	<atom:link href="http://perlprogrammer.co.uk/" rel="alternate" type="text/html" />

	<atom:author>
		<atom:name>Dave Cardwell</atom:name>
		<atom:email>dave+feed@perlprogrammer.co.uk</atom:email>
	</atom:author>
	
	
	<atom:link rel="self" href="http://feeds.feedburner.com/perlprogrammer-full" type="application/atom+xml" /><atom:entry>
		<atom:title>Catalyst::Model::S3 - Catalyst Model for Amazon’s S3 web service</atom:title>
		<atom:id>http://perlprogrammer.co.uk/module/Catalyst::Model::S3/</atom:id>
		<atom:updated>2007-03-07T03:30:00Z</atom:updated>
		<atom:link href="http://perlprogrammer.co.uk/modules/Catalyst::Model::S3/" rel="alternate" type="text/html" />
		
		<atom:category term="module" />
		<atom:category term="catalyst" />
		<atom:category term="perl" />
		<atom:category term="amazon" />
		<atom:category term="s3" />
		
		<atom:summary type="html"><![CDATA[
			<p>
				I’m happy to announce the release of a new Perl module, Catalyst::Model::S3.
			</p>
		]]></atom:summary>
		
		<atom:content type="html">
			&lt;p&gt;
				I’m happy to announce the release of a new Perl module, Catalyst::Model::S3.
			&lt;/p&gt;
			&lt;h2 id="what-is-it"&gt;
				What is it?
			&lt;/h2&gt;
			&lt;p&gt;
				From the module’s documentation…
			&lt;/p&gt;
			&lt;blockquote cite="http://search.cpan.org/dist/Catalyst-Model-S3/"&gt;
				This is a &lt;a href="http://www.catalystframework.org/"&gt;Catalyst&lt;/a&gt; model class that interfaces with Amazon’s Simple Storage Service. See the &lt;a href="http://search.cpan.org/dist/Net-Amazon-S3/"&gt;Net::Amazon::S3&lt;/a&gt; documentation for a description of the methods available. For more on S3 visit: &lt;a href="http://aws.amazon.com/s3" title="Amazon S3"&gt;http://aws.amazon.com/s3&lt;/a&gt;
			&lt;/blockquote&gt;
			&lt;h2 id="where-can-i-get-it"&gt;
				Where can I get it?
			&lt;/h2&gt;
			&lt;p&gt;
				You can download Catalyst::Model::S3 from &lt;a href="http://search.cpan.org/dist/Catalyst-Model-S3/"&gt;CPAN&lt;/a&gt; or find it in the &lt;a href="http://dev.catalystframework.org/repos/Catalyst/trunk/Catalyst-Model-S3/"&gt;Catalyst subversion repository&lt;/a&gt;.
			&lt;/p&gt;
			&lt;p&gt;
				Please don’t hesitate to &lt;a href="http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Catalyst-Model-S3"&gt;report bugs / request features&lt;/a&gt;.
			&lt;/p&gt;
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/perlprogrammer-full?a=jMUz2pJh"&gt;&lt;img src="http://feeds.feedburner.com/~f/perlprogrammer-full?i=jMUz2pJh" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/perlprogrammer-full?a=LO8RNwj3"&gt;&lt;img src="http://feeds.feedburner.com/~f/perlprogrammer-full?i=LO8RNwj3" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</atom:content>
	</atom:entry>
	
	
	<atom:entry>
		<atom:title>Serving Catalyst::View::TT templates from a DBIC model</atom:title>
		<atom:id>http://perlprogrammer.co.uk/catalyst/serving-catalyst::view::tt-templates-from-a-dbic-model/</atom:id>
		<atom:updated>2007-03-03T22:45:00Z</atom:updated>
		<atom:link href="http://perlprogrammer.co.uk/catalyst/serving-catalyst::view::tt-templates-from-a-dbic-model/" rel="alternate" type="text/html" />
		
		<atom:category term="catalyst" />
		<atom:category term="perl" />
		<atom:category term="template::provider::dbic" />
		<atom:category term="template toolkit" />
		<atom:category term="dbix::class" />
		
		<atom:summary type="html"><![CDATA[
			Following yesterday’s release of <a href="/modules/Template::Provider::DBIC/">Template::Provider::DBIC</a> I wanted to write a quick tutorial describing how to deploy it in your <a href="http://www.catalystframework.org/">Catalyst</a> projects.
		]]></atom:summary>
		
		<atom:content type="html">
			&lt;p&gt;
				Following yesterday’s release of &lt;a href="/modules/Template::Provider::DBIC/"&gt;Template::Provider::DBIC&lt;/a&gt; I wanted to write a quick tutorial describing how to deploy it in your &lt;a href="http://www.catalystframework.org/"&gt;Catalyst&lt;/a&gt; projects.
			&lt;/p&gt;
			&lt;h2 id="create-your-schema"&gt;
				Create your schema
			&lt;/h2&gt;
			&lt;p&gt;
				The minimal &lt;a href="http://search.cpan.org/dist/DBIx-Class/lib/DBIx/Class/Schema.pm"&gt;DBIx::Class::Schema&lt;/a&gt; required to store your templates is as follows…
			&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;package MyApp::Schema::Template;
use base qw/ DBIx::Class /;

__PACKAGE__-&gt;load_components( 'PK::Auto', 'Core' );

__PACKAGE__-&gt;table('template');
__PACKAGE__-&gt;add_columns(
    'name',     { data_type = 'VARCHAR', size =&gt; 4 },
    'modified', { data_type = 'DATETIME'           },
    'content',  { data_type = 'TEXT'               },
);

__PACKAGE__-&gt;set_primary_key('name');
__PACKAGE__-&gt;add_unique_constraint( 'name', ['name'] );


1;&lt;/code&gt;&lt;/pre&gt;
			&lt;h2 id="create-your-view"&gt;
				Create your view
			&lt;/h2&gt;
			&lt;p&gt;
				The &lt;a href="http://www.template-toolkit.org/"&gt;Template Toolkit&lt;/a&gt; lets you specify providers through the &lt;code&gt;LOAD_TEMPLATES&lt;/code&gt; configuration option…
			&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;package MyApp::View::TT;

use base qw/ Catalyst::View::TT /;
use Template::Provider::DBIC::Schema;

__PACKAGE__-&gt;config({
    LOAD_TEMPLATES =&gt; [
        Template::Provider::DBIC::Schema-&gt;new({
            RESULTSET =&gt; MyApp-&gt;model('Template'),
        }),
    ],
});


1;&lt;/code&gt;&lt;/pre&gt;
			&lt;h2&gt;
				You’re now using DBIx::Class for your templates
			&lt;/h2&gt;
			&lt;p&gt;
				Congratulations! The Template::Provider::DBIC documentation contains further details about &lt;a href="/modules/Template::Provider::DBIC/#options"&gt;configuration options&lt;/a&gt;, &lt;a href="/modules/Template::Provider::DBIC/#use-with-other-providers"&gt;use with other providers&lt;/a&gt;, and serving templates from &lt;a href="/modules/Template::Provider::DBIC/#synopsis"&gt;multiple ResultSets&lt;/a&gt;.
			&lt;/p&gt;
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/perlprogrammer-full?a=KDWpxL4P"&gt;&lt;img src="http://feeds.feedburner.com/~f/perlprogrammer-full?i=KDWpxL4P" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/perlprogrammer-full?a=NumdGsSb"&gt;&lt;img src="http://feeds.feedburner.com/~f/perlprogrammer-full?i=NumdGsSb" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</atom:content>
	</atom:entry>
	
	
	<atom:entry>
		<atom:title>Template::Provider::DBIC - Load templates using DBIx::Class.</atom:title>
		<atom:id>http://perlprogrammer.co.uk/module/Template::Provider::DBIC/</atom:id>
		<atom:updated>2007-03-03T22:40:00Z</atom:updated>
		<atom:link href="http://perlprogrammer.co.uk/modules/Template::Provider::DBIC/" rel="alternate" type="text/html" />

		<atom:category term="module" />
		<atom:category term="perl" />
		<atom:category term="template toolkit" />
		<atom:category term="dbix::class" />

		<atom:summary type="html"><![CDATA[
			Template::Provider::DBIC allows a <a href="http://search.cpan.org/dist/Template-Toolkit/lib/Template.pm">Template</a> object to fetch its data using <a href="http://search.cpan.org/dist/DBIx-Class/lib/DBIx/Class.pm">DBIx::Class</a> instead of, or in addition to, the default filesystem-based <a href="http://search.cpan.org/dist/Template-Toolkit/lib/Template/Provider.pm">Template::Provider</a>.
		]]></atom:summary>
		
		<atom:content type="html">
			&lt;p&gt;
				You can download Template::Provider::DBIC from &lt;a href="http://search.cpan.org/dist/Template-Provider-DBIC/"&gt;CPAN&lt;/a&gt; or find it in the &lt;a href="http://dev.catalyst.perl.org/repos/bast/trunk/Template-Provider-DBIC/"&gt;DBIx::Class subversion repository&lt;/a&gt;.
			&lt;/p&gt;
			&lt;h2 id="version"&gt;
				Version
			&lt;/h2&gt;
			&lt;p&gt;
				This document describes Template::Provider::DBIC version 0.01
			&lt;/p&gt;
			&lt;h2 id="synopsis"&gt;
				Synopsis
			&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;use My::DBIC::Schema;
use Template;
use Template::Provider::DBIC;

my $schema = My::DBIC::Schema-&gt;connect(
    $dsn, $user, $password, \%options
);
my $resultset = $schema-&gt;resultset('Template');&lt;/code&gt;&lt;/pre&gt;
			&lt;p&gt;
				If all of your templates are stored in a single table the most convenient method is to pass the provider a &lt;a href="http://search.cpan.org/dist/DBIx-Class/lib/DBIx/Class/ResultSet.pm"&gt;DBIx::Class::ResultSet&lt;/a&gt;.
			&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;my $template = Template-&gt;new({
    LOAD_TEMPLATES =&gt; [
        Template::Provider::DBIC-&gt;new({
            RESULTSET =&gt; $resultset,
            # Other template options like
            # COMPILE_EXT...
        }),
    ],
});

# Process the template 'my_template' from the
# resultset 'Template'.
$template-&gt;process('my_template');

# Process the template 'other_template' from the
# resultset 'Template'.
$template-&gt;process('other_template');&lt;/code&gt;&lt;/pre&gt;
			&lt;p&gt;
				Alternatively, where your templates are stored in several tables you can pass a &lt;a href="http://search.cpan.org/dist/DBIx-Class/lib/DBIx/Class/Schema.pm"&gt;DBIx::Class::Schema&lt;/a&gt; and specify the result set and template name in the form &lt;code&gt;ResultSet/template_name&lt;/code&gt;.
			&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;my $template2 = Template-&gt;new({
    LOAD_TEMPLATES =&gt; [
        Template::Provider::DBIC-&gt;new({
            SCHEMA =&gt; $schema,
            # Other template options...
        }),
    ],
});

# Process the template 'my_template' from the
# resultset 'Template'.
$template-&gt;process('Template/my_template');

# Process the template 'my_template' from the
# resultset 'Other'.
$template-&gt;process('Other/my_template');&lt;/code&gt;&lt;/pre&gt;
			&lt;p&gt;
				In cases where both are supplied, the more specific RESULTSET will take precedence.
			&lt;/p&gt;
			&lt;h2 id="description"&gt;
				Description
			&lt;/h2&gt;
			&lt;p&gt;
				Template::Provider::DBIC allows a &lt;a href="http://search.cpan.org/dist/Template-Toolkit/lib/Template.pm"&gt;Template&lt;/a&gt; object to fetch its data using &lt;a href="http://search.cpan.org/dist/DBIx-Class/lib/DBIx/Class.pm"&gt;DBIx::Class&lt;/a&gt; instead of, or in addition to, the default filesystem-based &lt;a href="http://search.cpan.org/dist/Template-Toolkit/lib/Template/Provider.pm"&gt;Template::Provider&lt;/a&gt;.
			&lt;/p&gt;
			&lt;h3 id="schema"&gt;
				Schema
			&lt;/h3&gt;
			&lt;p&gt;
				This provider requires a schema containing at least the following:
			&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt;
					A column containing the template name. When &lt;code&gt;$template-&amp;#62;provider($name)&lt;/code&gt; is called the provider will search this column for the corresponding &lt;code&gt;$name&lt;/code&gt;. For this reason the column must be a unique key, else an exception will be raised.
				&lt;/li&gt;
				&lt;li&gt;
					A column containing the actual template content itself. This is what will be compiled and returned when the template is processed.
				&lt;/li&gt;
				&lt;li&gt;
					A column containing the time the template was last modified. This must return - or be inflated to - a date string recognisable by &lt;a href="http://search.cpan.org/dist/TimeDate/lib/Date/Parse.pm"&gt;Date::Parse&lt;/a&gt;.
				&lt;/li&gt;
			&lt;/ul&gt;
			&lt;h3 id="options"&gt;
				Options
			&lt;/h3&gt;
			&lt;p&gt;
				In addition to supplying a RESULTSET or SCHEMA and the standard &lt;a href="http://search.cpan.org/dist/Template-Toolkit/lib/Template/Provider.pm"&gt;Template::Provider&lt;/a&gt; options, you may set the following preferences:
			&lt;/p&gt;
			&lt;dl&gt;
				&lt;dt&gt;
					COLUMN_NAME
				&lt;/dt&gt;
				&lt;dd&gt;
					The table column that contains the template name. This will default to 'name'.
				&lt;/dd&gt;
				&lt;dt&gt;
					COLUMN_CONTENT
				&lt;/dt&gt;
				&lt;dd&gt;
					The table column that contains the template data itself. This will default to 'content'.
				&lt;/dd&gt;
				&lt;dt&gt;
					COLUMN_MODIFIED
				&lt;/dt&gt;
				&lt;dd&gt;
					The table column that contains the date that the template was last modified. This will default to 'modified'.
				&lt;/dd&gt;
			&lt;/dl&gt;
			&lt;h3 id="use-with-other-providers"&gt;
				Use with other providers
			&lt;/h3&gt;
			&lt;p&gt;
				By default Template::Provider::DBIC will raise an exception when it cannot find the named template. When TOLERANT is set to true it will defer processing to the next provider specified in LOAD_TEMPLATES where available. For example:
			&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;my $template = Template-&gt;new({
    LOAD_TEMPLATES =&gt; [
        Template::Provider::DBIC-&gt;new({
            RESULTSET =&gt; $resultset,
            TOLERANT  =&gt; 1,
        }),
        Template::Provider-&gt;new({
            INCLUDE_PATH =&gt; $path_to_templates,
        }),
    ],
});&lt;/code&gt;&lt;/pre&gt;
			&lt;h3 id="caching"&gt;
				Caching
			&lt;/h3&gt;
			&lt;p&gt;
				When caching is enabled, by setting COMPILE_DIR and/or COMPILE_EXT, Template::Provider::DBIC will create a directory consisting of the database DSN and table name. This should prevent conflicts with other databases and providers.
			&lt;/p&gt;
			&lt;h2 id="public-methods"&gt;
				Public Methods
			&lt;/h2&gt;
			&lt;h3&gt;
				-&amp;#62;fetch( $name )
			&lt;/h3&gt;
			&lt;p&gt;
				This method is called automatically during &lt;a href="http://search.cpan.org/dist/Template-Toolkit/lib/Template.pm"&gt;Template&lt;/a&gt;'s &lt;code&gt;-&amp;#62;process()&lt;/code&gt; and returns a compiled template for the given &lt;code&gt;$name&lt;/code&gt;, using the cache where possible.
			&lt;/p&gt;
			&lt;h2 id="diagnostics"&gt;
				Diagnostics
			&lt;/h2&gt;
			&lt;p&gt;
				In addition to errors raised by &lt;a href="http://search.cpan.org/dist/Template-Toolkit/lib/Template/Provider.pm"&gt;Template::Provider&lt;/a&gt; and &lt;a href="http://search.cpan.org/dist/DBIx-Class/lib/DBIx/Class.pm"&gt;DBIx::Class&lt;/a&gt;, Template::Provider::DBIC may generate the following error messages:
			&lt;/p&gt;
			&lt;dl&gt;
				&lt;dt&gt;
					A valid DBIx::Class::Schema or ::ResultSet is required
				&lt;/dt&gt;
				&lt;dd&gt;
					One of the SCHEMA or RESULTSET configuration options &lt;em&gt;must&lt;/em&gt; be provided.
				&lt;/dd&gt;
				&lt;dt&gt;
					%s not valid: must be of the form $table/$template
				&lt;/dt&gt;
				&lt;dd&gt;
					When using Template::Provider::DBIC with a &lt;a href="http://search.cpan.org/dist/DBIx-Class/lib/DBIx/Class/Schema.pm"&gt;DBIx::Class::Schema&lt;/a&gt; object, the template name passed to &lt;code&gt;-&amp;#62;process()&lt;/code&gt; must start with the name of the result set to search in.
				&lt;/dd&gt;
				&lt;dt&gt;
					'%s' is not a valid result set for the given schema
				&lt;/dt&gt;
				&lt;dd&gt;
					Couldn't find the result set %s in the given &lt;a href="http://search.cpan.org/dist/DBIx-Class/lib/DBIx/Class/Schema.pm"&gt;DBIx::Class::Schema&lt;/a&gt; object.
				&lt;/dd&gt;
				&lt;dt&gt;
					Could not retrieve '%s' from the result set '%s'
				&lt;/dt&gt;
				&lt;dd&gt;
					Unless TOLERANT is set to true failure to find a template with the given name will raise an exception.
				&lt;/dd&gt;
			&lt;/dl&gt;
			&lt;h2 id="dependencies"&gt;
				Dependencies
			&lt;/h2&gt;
			&lt;p&gt;
				Template::Provider::DBIC requires the following modules:
			&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt;
					&lt;a href="http://search.cpan.org/dist/Template-Toolkit/lib/Template/Provider.pm"&gt;Template::Provider&lt;/a&gt;
				&lt;/li&gt;
				&lt;li&gt;
					&lt;a href="http://search.cpan.org/dist/TimeDate/lib/Date/Parse.pm"&gt;Date::Parse&lt;/a&gt;
				&lt;/li&gt;
			&lt;/ul&gt;
			&lt;p&gt;
				Additionally, use of this module requires an object of the class &lt;a href="http://search.cpan.org/dist/DBIx-Class/lib/DBIx/Class/Schema.pm"&gt;DBIx::Class::Schema&lt;/a&gt; or &lt;a href="http://search.cpan.org/dist/DBIx-Class/lib/DBIx/Class/ResultSet.pm"&gt;DBIx::Class::ResultSet&lt;/a&gt;.
			&lt;/p&gt;
			&lt;h2 id="bugs"&gt;
				Bugs
			&lt;/h2&gt;
			&lt;p&gt;
				Please report any bugs or feature requests to &lt;a href="mailto:bug-template-provider-dbic%20at%20rt.cpan.org"&gt;bug-template-provider-dbic at rt.cpan.org&lt;/a&gt;, or through the web interface at &lt;a href="http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Template-Provider-DBIC"&gt;rt.cpan.org&lt;/a&gt;.
			&lt;/p&gt;
			&lt;h2 id="support"&gt;
				Support
			&lt;/h2&gt;
			&lt;p&gt;
				You can find documentation for this module with the perldoc command.
			&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;perldoc Template::Provider::DBIC&lt;/code&gt;&lt;/pre&gt;
			&lt;p&gt;
				You may also look for information at:
			&lt;/p&gt;
			&lt;ul&gt;
				&lt;li&gt;
					&lt;a href="http://perlprogrammer.co.uk/modules/Template::Provider::DBIC/"&gt;Template::Provider::DBIC&lt;/a&gt;
				&lt;/li&gt;
				&lt;li&gt;
					&lt;a href="http://annocpan.org/dist/Template-Provider-DBIC"&gt;AnnoCPAN: Annotated CPAN documentation&lt;/a&gt;
				&lt;/li&gt;
				&lt;li&gt;
					&lt;a href="http://rt.cpan.org/NoAuth/Bugs.html?Dist=Template-Provider-DBIC"&gt;RT: CPAN's request tracker&lt;/a&gt;
				&lt;/li&gt;
				&lt;li&gt;
					&lt;a href="http://search.cpan.org/dist/Template-Provider-DBIC"&gt;Search CPAN&lt;/a&gt;
				&lt;/li&gt;
			&lt;/ul&gt;
			&lt;h2 id="author"&gt;
				Author
			&lt;/h2&gt;
			&lt;p&gt;
				&lt;a href="http://davecardwell.co.uk/"&gt;Dave Cardwell&lt;/a&gt;
			&lt;/p&gt;
			&lt;h2 id="copyright-and-license"&gt;
				Copyright and license
			&lt;/h2&gt;
			&lt;p&gt;
				Copyright © 2007 Dave Cardwell. All rights reserved.
			&lt;/p&gt;
			&lt;p&gt;
				This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See &lt;a href="http://search.cpan.org/perldoc?perlartistic"&gt;perlartistic&lt;/a&gt;.
			&lt;/p&gt;
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/perlprogrammer-full?a=64xT4hL6"&gt;&lt;img src="http://feeds.feedburner.com/~f/perlprogrammer-full?i=64xT4hL6" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/perlprogrammer-full?a=8IrGcHdV"&gt;&lt;img src="http://feeds.feedburner.com/~f/perlprogrammer-full?i=8IrGcHdV" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</atom:content>
	</atom:entry>
	

	<atom:entry>
		<atom:title>How to set up SPF / Sender ID records with 123-reg</atom:title>
		<atom:id>http://perlprogrammer.co.uk/e-mail/how-to-set-up-spf-sender-id-records-with-123-reg/</atom:id>
		<atom:updated>2007-03-02T06:45:00Z</atom:updated>
		<atom:link href="http://perlprogrammer.co.uk/e-mail/how-to-set-up-spf-sender-id-records-with-123-reg/" rel="alternate" type="text/html" />

		<atom:category term="e-mail" />
		<atom:category term="spf" />
		<atom:category term="sender-id" />
		<atom:category term="dns" />
		<atom:category term="123-reg" />
		
		<atom:summary type="html"><![CDATA[
			<p>
				After registering this domain over at <a href="http://www.123-reg.co.uk/affiliate2.cgi?id=AF163054">123-reg.co.uk</a> I went about the usual business of setting up sub-domains, whois details and e-mail. This, however, was this first time I’d used their control panel to set up <abbr>SPF</abbr> and Sender ID <abbr title="Domain Name System">DNS</abbr> records. If you’re already familiar with <abbr>SPF</abbr> and Sender ID you can <a href="#using-your-records-with-123-reg">skip the next section</a>.
			</p>
		]]></atom:summary>

		<atom:content type="html">
			&lt;p&gt;
				After registering this domain over at &lt;a href="http://www.123-reg.co.uk/affiliate2.cgi?id=AF163054"&gt;123-reg.co.uk&lt;/a&gt; I went about the usual business of setting up sub-domains, whois details and e-mail. This, however, was this first time I’d used their control panel to set up &lt;abbr&gt;SPF&lt;/abbr&gt; and Sender ID &lt;abbr title="Domain Name System"&gt;DNS&lt;/abbr&gt; records. If you’re already familiar with &lt;abbr&gt;SPF&lt;/abbr&gt; and Sender ID you can &lt;a href="#using-your-records-with-123-reg"&gt;skip the next section&lt;/a&gt;.
			&lt;/p&gt;
			&lt;h2 id="spf-records-sender-id"&gt;
				&lt;abbr&gt;SPF&lt;/abbr&gt; Records? Sender ID!?
			&lt;/h2&gt;
			&lt;p&gt;
				If you’re here looking for information about &lt;a href="http://en.wikipedia.org/wiki/Sunscreen#Sun_protection_factor" title="Wikipedia’s entry about sun protection factor"&gt;sunscreen&lt;/a&gt; I’m afraid you’ve come to the wrong place. From &lt;a href="http://www.openspf.org/" title="The SPF Project"&gt;the horse&lt;/a&gt;’s mouth:
			&lt;/p&gt;
			&lt;blockquote cite="http://www.openspf.org/Introduction"&gt;
				&lt;abbr title="SPF Classic"&gt;SPFv1&lt;/abbr&gt; allows the owner of a domain to specify their mail sending policy, e.g. which mail servers they use to send mail from their domain.
			&lt;/blockquote&gt;
			&lt;p&gt;
				&lt;a href="http://www.microsoft.com/mscorp/safety/technologies/senderid/default.mspx"&gt;Sender ID&lt;/a&gt; uses similar mechanisms and syntax to validate e-mail sender addresses, but differs in &lt;em&gt;what&lt;/em&gt; it validates and what “layer” of the e-mail system it is concerned with.
			&lt;/p&gt;
			&lt;p&gt;
				Their respective syntaxes are beyond the scope of this tutorial and you’ll have to create your own before continuing. In my case I am using &lt;a href="http://www.google.com/a/"&gt;Google Apps&lt;/a&gt; for my mail, so the appropriate &lt;abbr&gt;SPF&lt;/abbr&gt; and Sender ID records are respectively:
			&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;v=spf1 include:aspmx.googlemail.com -all
spf2.0/pra include:aspmx.googlemail.com -all&lt;/code&gt;&lt;/pre&gt;
			&lt;h2 id="using-your-records-with-123-reg"&gt;
			 	Using your records with 123-reg
			&lt;/h2&gt;
			&lt;ol&gt;
				&lt;li&gt;
					Log in to your 123-reg control panel and choose the appropriate domain.
				&lt;/li&gt;
				&lt;li&gt;
					Choose “Manage &lt;abbr&gt;DNS&lt;/abbr&gt;”.
				&lt;/li&gt;
				&lt;li&gt;
					Under “Add new entry” enter “@” for the name, “TXT” for the type, and use your &lt;abbr&gt;SPF&lt;/abbr&gt; record for “Content”.
					&lt;span&gt;&lt;img src="/e-mail/how-to-set-up-spf-sender-id-records-with-123-reg/add-a-new-spf-dns-entry-with-123-reg.png" width="400" height="50" alt="Add a new SPF DNS entry with 123-reg"&gt;&lt;/span&gt;
				&lt;/li&gt;
				&lt;li&gt;
					Repeat the last step for your Sender ID token.
				&lt;/li&gt;
			&lt;/ol&gt;
			&lt;p&gt;
				It’s as simple as that! There are &lt;a href="http://www.openspf.org/Tools"&gt;various tools&lt;/a&gt; for testing your new set-up.
			&lt;/p&gt;
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/perlprogrammer-full?a=E1cxYdsl"&gt;&lt;img src="http://feeds.feedburner.com/~f/perlprogrammer-full?i=E1cxYdsl" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/perlprogrammer-full?a=XXKbJIGU"&gt;&lt;img src="http://feeds.feedburner.com/~f/perlprogrammer-full?i=XXKbJIGU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</atom:content>
	</atom:entry>
</atom:feed>
