<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SocketLabs Email Delivery Blog &#187; Hurricane MTA Server</title>
	<atom:link href="http://www.socketlabs.com/blog/category/hurricane-mta-server/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.socketlabs.com/blog</link>
	<description>Everything about Email Deliverability, Hurricane Server, SMTP Express, MTAs, etc...  Sponsored by SocketLabs, Inc.</description>
	<lastBuildDate>Thu, 10 Nov 2011 19:27:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Hurricane MTA Server Updates</title>
		<link>https://www.socketlabs.com/blog/2010/11/hurricane-mta-server-updates/</link>
		<comments>https://www.socketlabs.com/blog/2010/11/hurricane-mta-server-updates/#comments</comments>
		<pubDate>Tue, 30 Nov 2010 21:50:40 +0000</pubDate>
		<dc:creator>John Alessi</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Hurricane MTA Server]]></category>

		<guid isPermaLink="false">http://www.socketlabs.com/blog/?p=663</guid>
		<description><![CDATA[Over the past few months we have released some powerful new functionality into Hurricane MTA Server for our on-premise customers. Delivery Rule Overrides Delivery rule overrides enable you to globally override all delivery rules for an account. For example, if you wanted to change the throttling for an account to 50 messages per hour, per [...]]]></description>
			<content:encoded><![CDATA[<p style="clear: both">Over the past few months we have released some powerful new functionality into Hurricane MTA Server for our on-premise customers.</p>
<p style="clear: both"><strong>Delivery Rule Overrides</strong></p>
<p style="clear: both">Delivery rule overrides enable you to globally override all delivery rules for an account. For example, if you wanted to change the throttling for an account to 50 messages per hour, per domain, per IP, you can do it here.</p>
<p style="clear: both">Each delivery rule override gets overlaid on top of any existing delivery rules that would otherwise apply.</p>
<p style="clear: both"><a href="http://www.socketlabs.com/blog/wp-content/uploads/2010/11/Hurricane_MTA_Server.jpg" class="image-link" rel="lightbox"><img class="linked-to-original" src="http://www.socketlabs.com/blog/wp-content/uploads/2010/11/Hurricane_MTA_Server-thumb.jpg" height="302" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a><strong>Sender and Receiver Control</strong></p>
<p style="clear: both">It is now possible to independently control an accounts ability to accept new mail and/or to send mail already in queue.</p>
<p style="clear: both"><a href="http://www.socketlabs.com/blog/wp-content/uploads/2010/11/Hurricane_MTA_Server-1.jpg" class="image-link" rel="lightbox"><img class="linked-to-original" src="http://www.socketlabs.com/blog/wp-content/uploads/2010/11/Hurricane_MTA_Server-1-thumb1.jpg" height="275" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a><strong>New Bounce Processing Engine</strong></p>
<p style="clear: both">Under the hood is an entirely new bounce processing engine that is much more efficient and customizable than ever before. For most users this will be completely transparent, but for those of you who like to dive deep into bounce data, all of our bounces are categorized by codes now. The following KB article explains it more: <a href="http://www.socketlabs.com/78" target="_blank">http://www.socketlabs.com/78</a></p>
<p style="clear: both"><strong>Restarts on Config Changes Minimized</strong><br />We have optimized the internals so that far fewer restarts are required when making configuration changes.</p>
<p style="clear: both">If you have an up to date support contract and you would like to upgrade, with just a click you can easily grab the new builds, with these new features by using the built in Update option included with Hurricane MTA Server.</p>
<p><br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>https://www.socketlabs.com/blog/2010/11/hurricane-mta-server-updates/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Hurricane MTA Server Update Includes 64bit Support and More!</title>
		<link>https://www.socketlabs.com/blog/2010/04/hurricane-mta-server-update-includes-64bit-support-and-more/</link>
		<comments>https://www.socketlabs.com/blog/2010/04/hurricane-mta-server-update-includes-64bit-support-and-more/#comments</comments>
		<pubDate>Wed, 28 Apr 2010 18:03:09 +0000</pubDate>
		<dc:creator>John Alessi</dc:creator>
				<category><![CDATA[Hurricane MTA Server]]></category>

		<guid isPermaLink="false">http://www.socketlabs.com/blog/?p=560</guid>
		<description><![CDATA[The blog has been kind of quiet lately but we&#8217;ve been VERY busy at work. If you haven&#8217;t noticed there have been many improvements to Email On-Demand over the past months including a new interface with beautiful reporting, a new API and many other new and improved user-friendly features. On-Premise customers don&#8217;t worry, we have [...]]]></description>
			<content:encoded><![CDATA[<p style="clear: both">The blog has been kind of quiet lately but we&#8217;ve been VERY busy at work. If you haven&#8217;t noticed there have been many improvements to Email On-Demand over the past months including a new interface with beautiful reporting, a new API and many other new and improved user-friendly features. On-Premise customers don&#8217;t worry, we have been working hard on Hurricane MTA Server too. </p>
<p style="clear: both">Hurricane MTA Server is more important to us than ever now, since we are using it to power our SocketLabs Email On-Demand solution. This has led to several innovations and improvements in Hurricane MTA Server. Lately we have been working under-the-hood, strengthening the foundation of Hurricane MTA Server for future growth and leverage.</p>
<p style="clear: both">The latest production release of Hurricane MTA Server was pushed out quietly earlier this month but contained some really big improvements including:</p>
<ul style="clear: both">
<li>Support for running natively in 64-bit mode now allows Hurricane MTA Server access to much more RAM, increasing performance dramatically.</li>
<li>Fully upgraded the backend statistical database to further increase its performance and scalability.</li>
<li>Totally replaced the internals of the bounce and failure processing and analysis to provide much more accurate and specific bounce and failure codes.</li>
</ul>
<p style="clear: both">Each of these items were a massive undertaking for us in their own right and we have been working on them for over a year. It is really great to finally see them come to fruition.</p>
<p style="clear: both">Follow John Alessi on Twitter: <a href="http://www.twitter.com/johnalessi">@johnalessi</a></p>
<p><br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>https://www.socketlabs.com/blog/2010/04/hurricane-mta-server-update-includes-64bit-support-and-more/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>New Hurricane MTA Server Release Boasts Powerful New Features</title>
		<link>https://www.socketlabs.com/blog/2009/12/new-hurricane-mta-server-release-boasts-powerful-new-features/</link>
		<comments>https://www.socketlabs.com/blog/2009/12/new-hurricane-mta-server-release-boasts-powerful-new-features/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 13:23:00 +0000</pubDate>
		<dc:creator>John Alessi</dc:creator>
				<category><![CDATA[Hurricane MTA Server]]></category>
		<category><![CDATA[alerts]]></category>
		<category><![CDATA[authentication]]></category>
		<category><![CDATA[suppression]]></category>

		<guid isPermaLink="false">http://www.socketlabs.com/blog/?p=499</guid>
		<description><![CDATA[Automatic Suppression Lists The latest production release of Hurricane MTA Server adds powerful automatic suppression lists that boost your deliverability and protect your reputation by automatically blocking repeat emails to invalid addresses and email addresses that have filed complaints against you. This incredibly intelligent and automatic feature is out of beta and currently in production. [...]]]></description>
			<content:encoded><![CDATA[<h3>Automatic Suppression Lists</h3>
<p>The latest production release of Hurricane MTA Server adds powerful automatic suppression lists that boost your deliverability and protect your reputation by automatically blocking repeat emails to invalid addresses and email addresses that have filed complaints against you.  This incredibly intelligent and automatic feature is out of beta and currently in production.  </p>
<p>See <a href="http://www.socketlabs.com/blog/2009/10/new-deliverability-boosting-suppression-list-feature-now-in-beta/">this article</a> for more information.  </p>
<h3>More Powerful IP Based Authentication and Account Mapping</h3>
<p>Now, any account can be selected and authenticated by the source IP address.  Simply edit the IP whitelist and add the account id to the end of the IP address separated by a pipe.</p>
<p>For example if you wanted all email coming from 66.72.15.29 to go through account 1024, you would enter the following entry in the whitelist:</p>
<pre>66.72.15.29|1024</pre>
<h3>Critical Alerts</h3>
<p>System alerts are now broken out into two levels: critical and standard.   Critical and standard alerts can be sent to different email address lists, making it easy to escalate critical issues. </p>
<p>The alert level of each <a href="http://www.socketlabs.com/blog/2009/07/protect-your-email-reputation-with-new-dynamic-block-rules/">Dynamic Block Rule</a> can now be set to standard or critical.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.socketlabs.com/blog/2009/12/new-hurricane-mta-server-release-boasts-powerful-new-features/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bounce and Feedback Loop Test Addresses</title>
		<link>https://www.socketlabs.com/blog/2009/07/bounce-and-feedback-loop-test-addresses/</link>
		<comments>https://www.socketlabs.com/blog/2009/07/bounce-and-feedback-loop-test-addresses/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 21:28:34 +0000</pubDate>
		<dc:creator>John Alessi</dc:creator>
				<category><![CDATA[Deliverability]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Hurricane MTA Server]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[bounce]]></category>
		<category><![CDATA[fbl]]></category>
		<category><![CDATA[test]]></category>

		<guid isPermaLink="false">http://www.socketlabs.com/blog/?p=443</guid>
		<description><![CDATA[We built an auto-responder that can be used to test your bounce and feedback loop processing systems. Feel free to use it for your testing purposes. fbl-test@service.socketlabs.com Auto responds to From address with a feedback loop report in ARF format. bounce-test@service.socketlabs.com Auto responds to the Return-Path with a bounce message. As a side note, the [...]]]></description>
			<content:encoded><![CDATA[<p>We built an auto-responder that can be used to test your bounce and feedback loop processing systems.  Feel free to use it for your testing purposes.</p>
<p>fbl-test@service.socketlabs.com<br />
Auto responds to From address with a feedback loop report in ARF format.</p>
<p>bounce-test@service.socketlabs.com<br />
Auto responds to the Return-Path with a bounce message.</p>
<p>As a side note, the autoresponder was built using the .Net API in Hurricane MTA Server.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.socketlabs.com/blog/2009/07/bounce-and-feedback-loop-test-addresses/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Smart Delivery Rule Update</title>
		<link>https://www.socketlabs.com/blog/2009/07/new-smart-delivery-rule-update/</link>
		<comments>https://www.socketlabs.com/blog/2009/07/new-smart-delivery-rule-update/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 22:09:38 +0000</pubDate>
		<dc:creator>John Alessi</dc:creator>
				<category><![CDATA[Deliverability]]></category>
		<category><![CDATA[Hurricane MTA Server]]></category>
		<category><![CDATA[dynamicblockrules]]></category>
		<category><![CDATA[smartdeliveryrules]]></category>

		<guid isPermaLink="false">http://www.socketlabs.com/blog/?p=432</guid>
		<description><![CDATA[We just released a new production release of Hurricane MTA Server and there are two things you should know about it: First, now our new Dynamic Block Rules are a part of the Smart Delivery Rules. Now, protecting your reputation is automatic. You can read more about Dynamic Block Rules here. Second, Smart Delivery Rules [...]]]></description>
			<content:encoded><![CDATA[<p>We just released a new production release of Hurricane MTA Server and there are two things you should know about it:</p>
<p><strong>First</strong>, now our new Dynamic Block Rules are a part of the Smart Delivery Rules.  Now, protecting your reputation is automatic.  You can read more about Dynamic Block Rules <a href="http://www.socketlabs.com/blog/2009/07/protect-your-email-reputation-with-new-dynamic-block-rules/">here</a>.</p>
<p><strong>Second</strong>, Smart Delivery Rules can now be updated easily from within the Hurricane MTA Server interface without having to update the entire application.  </p>
<p><a href="http://www.socketlabs.com/blog/wp-content/uploads/2009/07/hms-smart-rule-updater.jpg" rel="lightbox"><img src="http://www.socketlabs.com/blog/wp-content/uploads/2009/07/hms-smart-rule-updater-475x389.jpg" alt="hms-smart-rule-updater" title="hms-smart-rule-updater" width="475" height="389" class="aligncenter size-large wp-image-438" /></a></p>
<p>The Administrative configuration page has a new option to download and apply the latest set of Smart Delivery Rules directly from our database.</p>
<p>With these two enhancements it is now easier than ever to leave things up to us and still be assured of the highest deliverability possible.  Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>https://www.socketlabs.com/blog/2009/07/new-smart-delivery-rule-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Protect your Email Reputation with New Dynamic Block Rules</title>
		<link>https://www.socketlabs.com/blog/2009/07/protect-your-email-reputation-with-new-dynamic-block-rules/</link>
		<comments>https://www.socketlabs.com/blog/2009/07/protect-your-email-reputation-with-new-dynamic-block-rules/#comments</comments>
		<pubDate>Fri, 10 Jul 2009 15:03:59 +0000</pubDate>
		<dc:creator>John Alessi</dc:creator>
				<category><![CDATA[Deliverability]]></category>
		<category><![CDATA[Hurricane MTA Server]]></category>
		<category><![CDATA[blacklist]]></category>
		<category><![CDATA[block]]></category>
		<category><![CDATA[rbl]]></category>
		<category><![CDATA[reputation]]></category>

		<guid isPermaLink="false">http://www.socketlabs.com/blog/?p=386</guid>
		<description><![CDATA[Protecting your email reputation is getting harder and harder, yet it is critical to successfully delivering marketing or transactional email. A large part of protecting your reputation includes honoring the requests of a seemingly infinite number of ISPs. So what is an emailer to do? The new Dynamic Block Rules in Hurricane MTA Server provide [...]]]></description>
			<content:encoded><![CDATA[<p>Protecting your email reputation is getting harder and harder, yet it is critical to successfully delivering marketing or transactional email.  A large part of protecting your reputation includes honoring the requests of a seemingly infinite number of ISPs.  So what is an emailer to do?</p>
<div class="callout">
The new Dynamic Block Rules in Hurricane MTA Server provide an easy and automatic solution to protecting your reputation by automatically, temporarily suppressing delivery at the request of an ISP.
</div>
<p>Dynamic Block Rules are a new part of Hurricane MTA Server&#8217;s Delivery Rule system.  Hurricane MTA Server&#8217;s Delivery Rules enable traffic shaping to specific ISPs. The new Dynamic Block Rules are a subset of a Delivery Rule.  The Dynamic Block Rule system scans ISP responses for known codes and text which indicate that the ISP wants you to pause sending them email.  The Dynamic Block System then automatically pauses delivery to that ISP for the time period setup in the block rule.  </p>
<p><a href="http://www.socketlabs.com/blog/wp-content/uploads/2009/07/dbr.png" rel="lightbox"><img src="http://www.socketlabs.com/blog/wp-content/uploads/2009/07/dbr-391x475.png" alt="dbr" title="dbr" width="391" height="475" class="aligncenter size-large wp-image-407" /></a></p>
<p>Multiple Dynamic Block Rules may be specified for each Delivery Rule and they are evaluated in the order of their priority, top-down, until a match is made, in which event that rule is activated.  Only one rule can ever be active at one time.  Each time a Dynamic Block Rule is activated, a Delivery Alert will be posted to the Hurricane MTA Server alert system.  There is also a Dynamic Block Rule option to &#8220;Only Alert&#8221; without pausing delivery.<br />
Each rule consists of the following pieces of information:</p>
<table class="post">
<tr class="post">
<th>Setting</th>
<th>Description</th>
</tr>
<tr class="post">
<td>Enabled</td>
<td>Specifies whether the rule is enabled.  If a rule is not enabled it will be ignored by Hurricane MTA Server.</td>
</tr>
<tr class="post">
<td>Priority</td>
<td>Specifies the ordinal position of the rule in the list.  Rules are evaluated from top to bottom until a match is made.  1 is the highest priority.</td>
</tr>
<tr class="post">
<td>Match</td>
<td>A regular expression that will be matched against responses from the ISP being handled by the Delivery Rule.  If a match is made, the rule will be activated.</td>
</tr>
<tr class="post">
<td>Action</td>
<td>Possible values:<br />Alert Only &#8211; Generate an alert, but do not alter delivery<br />Defer &#8211; Defer all mail to this ISP for the specified Duration<br />Fail &#8211; Fail all mail to this ISP for the specified Duration</td>
</tr>
<tr class="post">
<td>Duration</td>
<td>Number of minutes this rule should remain in force once activated.  This value is ignored if Action is set to &#8220;Alert Only&#8221;.</td>
</tr>
</table>
<p>So what are some of the reasons why an ISP would want you to stop delivering mail?  This could be the result of sending too much mail per hour, receiving too many complaints about your email, trying to deliver to bad email addresses or various other reasons.  The important thing is that the ISP wants you to pause sending and failure to do so can damage your reputation.</p>
<p>The Dynamic Block Rule system is a part of the latest release of Hurricane MTA Server. There is also a new Dynamic Block Rule log file that can be enabled via the log settings for each account.  A future post will outline that log file and show you how it can be used to analyze the effectiveness of your Dynamic Block Rules and and fine tune them to obtain the highest deliverability possible.</p>
<p>Within the next month we will incorporate block rules into Hurricane MTA Server&#8217;s Smart Delivery Rule list.  Smart Delivery Rules are a set of Delivery Rules defined and periodically updated by SocketLabs to properly shape traffic to the large ISPs.</p>
<p>Until then, you can try your hand at creating your own Dynamic Block Rules to get a feel for how the system works.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.socketlabs.com/blog/2009/07/protect-your-email-reputation-with-new-dynamic-block-rules/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Webinar to Highlight New Features of Hurricane MTA Server</title>
		<link>https://www.socketlabs.com/blog/2009/07/webinar-to-highlight-new-features-of-hurricane-mta-server/</link>
		<comments>https://www.socketlabs.com/blog/2009/07/webinar-to-highlight-new-features-of-hurricane-mta-server/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 20:05:27 +0000</pubDate>
		<dc:creator>John Alessi</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Hurricane MTA Server]]></category>
		<category><![CDATA[webinar]]></category>

		<guid isPermaLink="false">http://www.socketlabs.com/blog/?p=247</guid>
		<description><![CDATA[Please join us for a free webinar which will highlight the new features of Hurricane MTA Server released in June and how they can be used to protect your reputation and increase your email deliverability. The webinar will be offered at two dates/times: Tuesday July 14th 4PM EDT (click here to register) Tuesday July 21st [...]]]></description>
			<content:encoded><![CDATA[<p>Please join us for a free webinar which will highlight the new features of Hurricane MTA Server released in June and how they can be used to protect your reputation and increase your email deliverability.  The webinar will be offered at two dates/times:</p>
<p>Tuesday July 14th 4PM EDT (<a href="https://www2.gotomeeting.com/register/954400154">click here to register</a>)<br />
Tuesday July 21st 9AM EDT (<a href="https://www2.gotomeeting.com/register/483734658">click here to register</a>)<br />
Wednesday July 29th 2PM EDT <a href="https://www2.gotomeeting.com/register/677775075">click here to register</a>)</p>
<p><strong>Space is limited, so please reserve your seat now.</strong></p>
]]></content:encoded>
			<wfw:commentRss>https://www.socketlabs.com/blog/2009/07/webinar-to-highlight-new-features-of-hurricane-mta-server/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Feedback Loop Processing and Reporting in Hurricane MTA Server</title>
		<link>https://www.socketlabs.com/blog/2009/07/feedback-loop-processing-and-reporting-in-hurricane-mta-server/</link>
		<comments>https://www.socketlabs.com/blog/2009/07/feedback-loop-processing-and-reporting-in-hurricane-mta-server/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 19:41:45 +0000</pubDate>
		<dc:creator>John Alessi</dc:creator>
				<category><![CDATA[Deliverability]]></category>
		<category><![CDATA[Hurricane MTA Server]]></category>
		<category><![CDATA[fbl]]></category>
		<category><![CDATA[reporting]]></category>

		<guid isPermaLink="false">http://www.socketlabs.com/blog/?p=252</guid>
		<description><![CDATA[One of the biggest updates in the new release of Hurricane MTA Server is built in feedback loop report processing. If you are not familiar with feedback loops, it is primarily used as a mechanism for ISPs to notify senders of the recipients that are reporting their mail as spam. Since these spam complaints damage [...]]]></description>
			<content:encoded><![CDATA[<p>One of the biggest updates in the new release of Hurricane MTA Server is built in feedback loop report processing.  If you are not familiar with feedback loops, it is primarily used as a mechanism for ISPs to notify senders of the recipients that are reporting their mail as spam.  Since these spam complaints damage your reputation and hurt your deliverability, it is imperative that the recipients responsible for the complaints be removed from your list immediately.</p>
<p>This has not been an easy task in the past, but with the new features in Hurricane MTA Server it just became a whole lot easier.  Hurricane MTA Server is now capable of intercepting feedback loop report messages from ISPs, which it will automatically analyze and process.  The results of the analysis of each feedback loop report received are logged, passed to <a href="http://www.socketlabs.com/blog/2009/07/handling-feedback-loop-reports-with-a-plugin/">a new plugin API event</a> and also included on the brand new built-in feedback loop report.</p>
<div align=center><div id="attachment_262" class="wp-caption center" style="width: 310px"><a href="http://www.socketlabs.com/blog/wp-content/uploads/2009/07/picture-11.png" rel="lightbox"><img src="http://www.socketlabs.com/blog/wp-content/uploads/2009/07/picture-11-300x251.png" alt="Feedback Loop Report" title="Feedback Loop Report" width="300" height="251" class="size-medium wp-image-262" /></a><p class="wp-caption-text">Feedback Loop Report</p></div></div>
<p>A <a href="http://www.socketlabs.com/blog/2009/07/handling-feedback-loop-reports-with-a-plugin/">new plugin API event</a> (courtesy of the <a href="http://www.socketlabs.com/blog/2009/07/new-plugin-api-interface-for-hurricane-mta-server-expands-integration-potential-infinitely/">new IDynamic plugin interface</a>) can also be handled to push the results right out to your own databases in real-time.</p>
<div class="callout">Hurricane MTA Server&#8217;s <a href="http://www.socketlabs.com/blog/2009/07/handling-feedback-loop-reports-with-a-plugin/">feedback loop API</a> makes it possible to have the recipients that flag your mail as spam, removed from your address list in real-time!  Imagine what that will do for your deliverability!</div>
<p>Hurricane MTA Server has the ability to process feedback loop reports that are in the Abuse Feedback Reporting Format (<a href="http://tools.ietf.org/id/draft-shafranovich-feedback-report-07.txt" target="_blank">ARF</a>) such as Aol, Yahoo, Comcast and others as well as non ARF feedback loop reports from Hotmail and MSN.  </p>
<p>Feedback loop reports are specific to each ISP so you must sign up with each ISP separately.   Normally you are required to fill out a form on each ISP&#8217;s web site proving that you are the owner of the IP addresses you wish to monitor and providing an email address to send the reports to.  Once your feedback loop is setup with the ISP, you must configure Hurricane MTA Server to accept and process the messages.</p>
<p>The email address you choose must have its mail exchange set to the IP of your Hurricane MTA Server and Hurricane MTA Server must be configured with the same address so that it knows to accept the messages.  Feedback loops are configured in Hurricane MTA Server in the new FBL tab of the account settings.  Once setup correctly Hurricane MTA Server will start accepting the reports and parsing them.</p>
<div align=center><div id="attachment_273" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.socketlabs.com/blog/wp-content/uploads/2009/07/hurricane-mta-server-1.jpg" rel="lightbox"><img src="http://www.socketlabs.com/blog/wp-content/uploads/2009/07/hurricane-mta-server-1-300x135.jpg" alt="Feedback Loop Configuration" title="Feedback Loop Configuration" width="300" height="135" class="size-medium wp-image-273" /></a><p class="wp-caption-text">Feedback loop configuration is per account.</p></div></div>
<p>When feedback loops are processed the results can also be put into a feedback loop log file (enabled in account log file settings) or processed by your code in real time with the <a href="http://www.socketlabs.com/blog/2009/07/handling-feedback-loop-reports-with-a-plugin/">new feedback loop plugin API event</a></p>
<p>See our list of <a href="http://www.socketlabs.com/blog/2009/07/feedback-loop-signup-links/">feedback loop signup links</a>.</p>
<p>Good luck!</p>
]]></content:encoded>
			<wfw:commentRss>https://www.socketlabs.com/blog/2009/07/feedback-loop-processing-and-reporting-in-hurricane-mta-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Plugin API Interface for Hurricane MTA Server Expands Integration Potential Infinitely</title>
		<link>https://www.socketlabs.com/blog/2009/07/new-plugin-api-interface-for-hurricane-mta-server-expands-integration-potential-infinitely/</link>
		<comments>https://www.socketlabs.com/blog/2009/07/new-plugin-api-interface-for-hurricane-mta-server-expands-integration-potential-infinitely/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 19:04:00 +0000</pubDate>
		<dc:creator>John Alessi</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Hurricane MTA Server]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://www.socketlabs.com/blog/?p=267</guid>
		<description><![CDATA[Hurricane MTA Server&#8217;s event-driven plugin API has long been one of its greatest features and strengths. It enables real-time event-driven integration and data push capabilities never before seen in an MTA. Interfaces like IOutboundSMTPConncetion and its OnSent(), OnFail() and OnDefer() event methods allow developers to handle real-time events with .Net code just as easy as [...]]]></description>
			<content:encoded><![CDATA[<p>Hurricane MTA Server&#8217;s event-driven plugin API has long been one of its greatest features and strengths.  It enables real-time event-driven integration and data push capabilities never before seen in an MTA.  Interfaces like IOutboundSMTPConncetion and its OnSent(), OnFail() and OnDefer() event methods allow developers to handle real-time events with .Net code just as easy as handling an OnClick() or Page_Load() event in other .Net apps.</p>
<p>These &#8220;pre-casted&#8221; event methods are easy to use, but unfortunately they are pretty much immutable.  Due to the limitations imposed by the architecture of .Net we can not extend these methods or interfaces without breaking the original interface and forfeiting its backwards compatibility &#8211; and the backwards compatibility of the Hurricane MTA Server plugins you have developed.</p>
<p>Our answer to this is the new IDynamic plugin interface.  Unlike the other interfaces supported by the Hurricane MTA Server plugin API, the IDynamic interface contains only one method, OnDynamicEvent().</p>
<pre class="code">
object OnDynamicEvent(DynamicEventId eventId, ref Dictionary<string, object> eventParams)
</pre>
<p>OnDynamicEvent() and its parameters are generic.  Hurricane MTA Server can trigger this method for any type of event, which it identifies by the <em>eventId</em> parameter and can pass an unlimited number of parameters via the <em>eventParams</em> dictionary object.  </p>
<p>Additionally since <em>eventParams</em> is passed by reference, plugins can add to or modify the values it contains as a way of instructing Hurricane MTA Server to do something differently.  The return value of OnDynamicEvent is an object type which further enables plugins to return rich information to Hurricane MTA Server where applicable.  </p>
<div class="callout">
IDynamic is much less rigid than the other Hurricane MTA Server API interfaces and the benefit becomes clear when you realize that now we can add infinite levels of functionality to the API without breaking the interface &#8211; or your existing code!
</div>
<p>Lets take a look at a simple implementation of the IDynamic interface.</p>
<pre class="code">
public class Feedbackloop : PluginBase, IDynamic
{
     public object OnDynamicEvent(DynamicEventId eventId, ref Dictionary<string, object> eventParams)
     {
         if (eventId == DynamicEventId.Init)
         {
             eventParams["OnFirstConnection"] = 1;
         }
         if (eventId == DynamicEventId.OnFirstConnection)
         {
             //do work here to handle OnFirstConnection event
         }
         return null;
    }
}
</pre>
<p>The first thing you will notice is that since the OnDynamicEvent() method can be called for any number of events, we are checking the <em>eventId</em> parameter to see which event is actually being fired.</p>
<p>One event that we must handle in every OnDymanicEvent() implementation is Init.  OnDynamicEvent() will be called with the <em>eventId</em> parameter set to DynamicEventId.Init the first time OnDynamicEvent() is called after the plugin is loaded.  The Init event must be handled to instruct Hurricane MTA Server to call OnDynamicEvent() for other events that you want to handle.  This is for performance as it would not be efficient for Hurricane MTA Server to call OnDynamicEvent() for every event it supports, even if you are not building a handler for it.  </p>
<p>When the Init event is fired, <em>eventParams</em> will contain an item for each of the events supported by OnDynamicEvent().  You must handle the Init event and set the value to 1 for each event you want fired.</p>
<p>In the above example we are setting the value of the <em>eventParams</em> dictionary item OnFirstConnection to 1, to indicate that we are going to handle the OnFirstConnection event.  OnFirstConnection is an event that is fired just before a new connection is made to an ISP. </p>
<pre class="code">
             eventParams["OnFirstConnection"] = 1;
</pre>
<p>This is how we tell Hurricane MTA Server to fire OnDynamicEvent().  Below is another way of doing the same thing.  It is not as clean looking but is more error proof because the event identifier is being taken from a predefined enumeration.</p>
<pre class="code">
             eventParams[DynamicEventId.OnFirstConnection.ToString()] = 1;
</pre>
<p>Lets expand the sample with some more code that will actually do something each time the  OnFirstConnection event is fired.  First, I need to tell you a bit more about the OnFirstConnection event.</p>
<div class="callout">
Keep in mind that OnFirstConnection is one of many events that can be handled by the IDynamic interface and was randomly chosen for this example.  IDynamic can also be used to handle OnFail, OnSent, etc&#8230;  as well as other events.  The power of IDynamic is that we are now able to add more events, and extend existing events the plugin API without disturbing backwards compatibility.  In that same spirit, all of the old API interfaces such as IBounceProcess and IOutboundSMTPConnection, are all still supported so your old plugins will continue to run as usual.
</div>
<p>OnFirstConnection is called when a connection is about to be made to an ISP. The <em>eventParams</em> parameter will contain the following items:</p>
<table class="post">
<tr class="post">
<th>Key</th>
<th>Value</th>
</tr>
<tr class="post">
<td>(out string) AccountId</td>
<td>The id of the account making the connection.</td>
</tr>
<tr class="post">
<td>(out string) Domain</td>
<td>The domain the connection is being made to.</td>
</tr>
<tr class="post">
<td>(out string) LocalIp</td>
<td>The local ip address that is connecting out.</td>
</tr>
<tr class="post">
<td>(in/out StringDictionary) DeliveryRule</td>
<td>The delivery rule settings being used.</td>
</tr>
</table>
<p>By handling the OnFirstConnection event, we can modify the DeliveryRule dictionary object, changing the delivery rule for this ISP in real time.</p>
<pre class="code">
public class Feedbackloop : PluginBase, IDynamic
{
     public object OnDynamicEvent(DynamicEventId eventId, ref Dictionary<string, object> eventParams)
     {
         //Tell the system we only want to get feedback loop events.
         if (eventId == DynamicEventId.Init)
         {
             eventParams["OnFirstConnection"] = 1;
         }
         if (eventId == DynamicEventId.OnFirstConnection)
         {
             if (someConditionExists)
             {
                 <b>StringDictionary rule = eventParams["DeliveryRule"];
                 rule["Action"]="Defer";</b>
             }
         }
         return null;
     }
}
</pre>
<p>In this example, if the variable <em>someConditionExists</em> evaluates to true, then we set the delivery rule action to &#8220;Defer&#8221;.  This changes the delivery rule in the Hurricane MTA Server process to defer all email which is subject to this delivery rule until the action is changed back to &#8220;Normal&#8221;.  Keep in mind that this only affects the delivery rule <em>in memory</em> and not the value in the configuration file for this rule.  That means that restarting the server will cause the action to revert back to the value in the config file (since the config file is reloaded when the server starts), which is in most cases &#8220;Normal&#8221;.</p>
<p>So, you might be asking, why would I want to write a plugin to change a delivery rule&#8217;s action to &#8220;Defer&#8221;?  Well one reason would be if you wanted to write some code to monitor the responses you receive from ISPs and change your delivery rules based on those responses.  For example you could also handle the OnFail event to monitor the responses and then keep some state as to how you want to change the delivery rule for that ISP the next time a connection attempt is made.  If an ISP response indicated that you were being blocked, you might want to automatically start deferring email to that ISP.  By coding this way you can add your own strategic logic to the delivery process.  Not all of our customers get this involved with the API, but a few power users do &#8211; and exploit it to great benefits.  </p>
<div class="callout">
Our goal is to make it possible to extend the software according to customer needs, and each of our customers have different needs.  The IDynamic interface allows us to satisfy our customers diverse, yet important needs today and far into the future.
</div>
<p>The IDynamic interface is a part of the current SDK which is included in the latest production version of Hurricane MTA Server released in June 09.  Its documentation and samples can be found in the plugins directory of your Hurricane MTA Server installation.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.socketlabs.com/blog/2009/07/new-plugin-api-interface-for-hurricane-mta-server-expands-integration-potential-infinitely/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Handling Feedback Loop Reports with a Plugin</title>
		<link>https://www.socketlabs.com/blog/2009/07/handling-feedback-loop-reports-with-a-plugin/</link>
		<comments>https://www.socketlabs.com/blog/2009/07/handling-feedback-loop-reports-with-a-plugin/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 21:41:39 +0000</pubDate>
		<dc:creator>John Alessi</dc:creator>
				<category><![CDATA[Deliverability]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Hurricane MTA Server]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[fbl]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://www.socketlabs.com/blog/?p=277</guid>
		<description><![CDATA[One of the cool new events supported by the new IDynamic plugin API interface is OnFeedbackLoopParsed which can be fired each time a feedback loop report is received and processed by Hurricane MTA Server. The following code illustrates how the event can be handled by your code. If you have not read about the new [...]]]></description>
			<content:encoded><![CDATA[<p>One of the cool new events supported by the <a href="http://www.socketlabs.com/blog/2009/07/new-plugin-api-interface-for-hurricane-mta-server-expands-integration-potential-infinitely/">new IDynamic plugin API interface</a> is OnFeedbackLoopParsed which can be fired each time a feedback loop report is received and processed by Hurricane MTA Server.</p>
<p>The following code illustrates how the event can be handled by your code.  If you have not read about the <a href="http://www.socketlabs.com/blog/2009/07/new-plugin-api-interface-for-hurricane-mta-server-expands-integration-potential-infinitely/">new IDynamic plugin API interface</a> yet I would suggest that you do because it contains the basic information on the OnDynamicEvent() method which is used to fire the feedback loop events. </p>
<pre class="code">
public class Feedbackloop : PluginBase, IDynamic
{

     public object OnDynamicEvent(DynamicEventId eventId, ref Dictionary<string, object> eventParams)
     {
         //Tell the system we only want to get feedback loop events
         if (eventId == DynamicEventId.Init)
         {
             eventParams[DynamicEventId.OnFeedbackLoopParsed.ToString()] = 1;
         }
         //Handle feedback loop event
         if (eventId == DynamicEventId.OnFeedbackLoopParsed)
         {
             string OrignalRecipient = eventParams["OriginalRecipient"].ToString();
             string OrignalMessageId = eventParams["SystemMessageID"].ToString();
             string CustomMailingID = eventParams["CustomMailingID"].ToString();
             string CustomMessageID = eventParams["CustomMessageID"].ToString();
             string UserAgent = eventParams["User-Agent"].ToString();
             string Type = eventParams["Type"].ToString();

             /// To-do: Do database work to unsubscribe user.

         }
         return null;
     }

}
</pre>
<p>Also, in cash you missed it, find out all the info on the <a href="http://www.socketlabs.com/blog/2009/07/feedback-loop-processing-and-reporting-in-hurricane-mta-server/">new feedback loop processing and reporting</a> in Hurricane MTA Server.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.socketlabs.com/blog/2009/07/handling-feedback-loop-reports-with-a-plugin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

