<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title><![CDATA[Nick Pack]]></title>
    <link>http://www.nickpack.com</link>
    <description><![CDATA[The online home of Nick Pack, Sysadmin, Programmer & Rockstar wannabe]]></description>
    <pubDate>Fri, 30 Jul 2010 10:48:39 +0000</pubDate>
    <managingEditor>no_spam-nick@nickpack.com (Nick Pack)</managingEditor>
    <webMaster>no_spam-nick@nickpack.com</webMaster>
    <generator>Zend_Feed</generator>
    <language>en-gb</language>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/NickPack" /><feedburner:info uri="nickpack" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license><image><link>http://www.nickpack.com</link><url>http://www.nickpack.com/media/interface/logo.png</url><title>Nick Pack</title></image><feedburner:emailServiceId>NickPack</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
      <title><![CDATA[Where I've been hiding]]></title>
      <link>http://feedproxy.google.com/~r/NickPack/~3/8urX8FzBkbk/where-ive-been-hiding</link>
      <description><![CDATA[As you can probably see, this site has been somewh ...]]></description>
      <content:encoded><![CDATA[<p>As you can probably see, this site has been somewhat stagnated for a long while...</p>
<p>I am dabbling with so much at the moment, and my working life is also quite busy so I guess this site just got left.</p>
<p>I spend a lot of time on github of late, so if you should wish you can keep track of what I am up to on there (although a lot of my repos are private :) ) <a href="http://www.github.com/nickpack">http://www.github.com/nickpack</a></p>
<h2>The iDroid</h2>
<p>I have spent quite a bit of time recently messing around with Android on the iPhone, the project has gained some serious momentum in the recent couple of months and the project is getting to an almost usable state now (Once the power management stuff is sorted, it may well turn out to be a very viable alternative for iOS - this remains to be seen though)</p>
<p>Here are some resources pertaining to Android on the iPhone:</p>
<ul>
<li><a href="http://linuxoniphone.blogspot.com">Linux on iPhone</a> - the blog of planetbeing, the man that started it all off in the first place.</li>
<li><a href="http://www.idroidproject.org">iDroid Project</a> - the main forum and wiki for all things related to the iDroid.</li>
<li><a href="http://idroid.nickpack.com">My unofficial file repository for iDroid</a>&nbsp;- this is where I collect relevant source code and files and dump my compiles for the community.</li>
<li><a href="http://www.github.com/Bluerise">Bluerise&#146;s Github</a> - Bluerise at present is the most active contributor to the project (given planetbeings apparent absence)</li>
</ul>
<p>There are also a couple of experimental repo&#146;s on <a href="http://www.github.com/nickpack">my github</a> for my own testing, but be warned, these are VERY experimental and I am sure that most of the time the code will not compile without modification!</p>
<h2>BandApp</h2>
<p>I recently developed my first iPhone application, and will be launching it as a re-brandable service.</p>
<p>The initial version was built for my friends band &#146;The Nurse Who Loved Me&#146; and is intended as an interactive sampler for their music as well as allowing their fans to keep up to date with whats going on.</p>
<p>When I have ironed out a few minor issues, and sat down to discuss future features I will be putting together some pricing schedules and offering it to other bands should they wish for their own version of it.</p>
<p>I am also in the process of porting it to the android platform as I think this would also be beneficial.</p>
<p>You can check out the <a href="http://www.bandapp.mobi">BandApp site here</a>&nbsp;although this is also still a work in progress.</p>
<p><a href="http://itunes.apple.com/us/app/the-nurse-who-loved-me/id376237506?mt=8">The Nurse Who Loved Me app</a> can be downloaded from the app store now (Although I am waiting for the iOS4 compatible version to be approved by Apple)</p>
<p>&nbsp;</p>
<p>I will attempt to keep this site updated in the near future, but at present there are just too many more important things to do :)</p>
<p><a href="http://feedads.g.doubleclick.net/~a/ooEEl6uC1XVMRkj9fuVLRZuMF4g/0/da"><img src="http://feedads.g.doubleclick.net/~a/ooEEl6uC1XVMRkj9fuVLRZuMF4g/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/ooEEl6uC1XVMRkj9fuVLRZuMF4g/1/da"><img src="http://feedads.g.doubleclick.net/~a/ooEEl6uC1XVMRkj9fuVLRZuMF4g/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NickPack?a=8urX8FzBkbk:ldw45Bijfb0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=8urX8FzBkbk:ldw45Bijfb0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NickPack?i=8urX8FzBkbk:ldw45Bijfb0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=8urX8FzBkbk:ldw45Bijfb0:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=8urX8FzBkbk:ldw45Bijfb0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NickPack?i=8urX8FzBkbk:ldw45Bijfb0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=8urX8FzBkbk:ldw45Bijfb0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/NickPack?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=8urX8FzBkbk:ldw45Bijfb0:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/NickPack?i=8urX8FzBkbk:ldw45Bijfb0:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=8urX8FzBkbk:ldw45Bijfb0:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/NickPack?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=8urX8FzBkbk:ldw45Bijfb0:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NickPack?i=8urX8FzBkbk:ldw45Bijfb0:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=8urX8FzBkbk:ldw45Bijfb0:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/NickPack?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NickPack/~4/8urX8FzBkbk" height="1" width="1"/>]]></content:encoded>
      <pubDate>Fri, 25 Jun 2010 07:27:12 +0000</pubDate>
    <feedburner:origLink>http://www.nickpack.com/article/where-ive-been-hiding</feedburner:origLink></item>
    <item>
      <title><![CDATA[Simple Greater Than or Equal To Validator for ZF]]></title>
      <link>http://feedproxy.google.com/~r/NickPack/~3/4-Bv-Q5hobY/zend-framework-greaterthan-equalto-validator</link>
      <description><![CDATA[A simple validator for the Zend Framework to check ...]]></description>
      <content:encoded><![CDATA[<p>A simple validator for the Zend Framework to check if a value is greater than or equal to a specified value.</p>
<h2>The Validator</h2>
<p>Put this in library/Carbidefinger/Validate/Greaterthaneq.php</p>
<pre class="brush:php">
&lt;?php
/**
 * Greater than or equal to Validator
 * 
 * @package Carbidefinger_Validate
 * @author Nick Pack &lt;nick@carbidefinger.net>
 * @copyright Copyright (c) 2009, Carbide-Finger Ltd, All Rights Reserved
 */
class Carbidefinger_Validate_Greaterthaneq extends Zend_Validate_Abstract
{
  const NOT_GREATEREQUAL = 'notGreaterEqual';
  const MISSING_FIELD_NAME = 'missingFieldName';
  const INVALID_FIELD_NAME = 'invalidFieldName';

  /**
   * @var array
  */
  protected $_messageTemplates = array(
    self::MISSING_FIELD_NAME  =>
      'ERROR: Field name to match against was not provided.',
    self::INVALID_FIELD_NAME  =>
      'ERROR: The field "%fieldName%" was not provided to match against.',
    self::NOT_GREATEREQUAL =>
      'Is not more than or equal to %fieldTitle%.'
  );

  /**
   * @var array
  */
  protected $_messageVariables = array(
    'fieldName' => '_fieldName',
    'fieldTitle' =&gt; '_fieldTitle'
  );

  /**
   * Name of the field as it appear in the $context array.
   *
   * @var string
   */
  protected $_fieldName;

  /**
   * Title of the field to display in an error message.
   *
   * If evaluates to false then will be set to $this-&gt;_fieldName.
   *
   * @var string
  */
  protected $_fieldTitle;

  /**
   * Sets validator options
   *
   * @param  string $fieldName
   * @param  string $fieldTitle
   * @return void
  */
  public function __construct($fieldName, $fieldTitle = null) {
    $this-&gt;setFieldName($fieldName);
    $this-&gt;setFieldTitle($fieldTitle);
  }

  /**
   * Returns the field name.
   *
   * @return string
  */
  public function getFieldName() {
    return $this-&gt;_fieldName;
  }

  /**
   * Sets the field name.
   *
   * @param  string $fieldName
   * @return Zend_Validate_IdenticalField Provides a fluent interface
  */
  public function setFieldName($fieldName) {
    $this-&gt;_fieldName = $fieldName;
    return $this;
  }

  /**
   * Returns the field title.
   *
   * @return integer
  */
  public function getFieldTitle() {
    return $this-&gt;_fieldTitle;
  }

  /**
   * Sets the field title.
   *
   * @param  string:null $fieldTitle
   * @return Zend_Validate_IdenticalField Provides a fluent interface
  */
  public function setFieldTitle($fieldTitle = null) {
    $this-&gt;_fieldTitle = $fieldTitle ? $fieldTitle : $this-&gt;_fieldName;
    return $this;
  }

  /**
   * Defined by Zend_Validate_Interface
   *
   * Returns true if a field name has been set, the field name is available in the
   * context, and the value of that field name is greater than or equal to the provided value.
   *
   * @param  string $value
   *
   * @return boolean 
  */ 
  public function isValid($value, $context = null) {
    $this-&gt;_setValue($value);
    $field = $this-&gt;getFieldName();

    if (empty($field)) {
      $this-&gt;_error(self::MISSING_FIELD_NAME);
      return false;
    } elseif (!isset($context[$field])) {
      $this-&gt;_error(self::INVALID_FIELD_NAME);
      return false;
    } elseif (is_array($context)) {
      if ($value &gt;= $context[$field]) {
        return true;
      }
    } elseif (is_string($context) && ($value &gt;= $context)) {
      return true;
    }
    $this-&gt;_error(self::NOT_GREATEREQUAL);
    return false;
  }
}

</pre>
<h2>Usage</h2>
<p>To use this validator in Zend Form</p>
<pre class="brush:php">$element-&gt;addPrefixPath(&#146;Carbidefinger&#146;,&#146;Carbidefinger/&#146;)&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp;-&gt;addValidator(&#146;Greaterthaneq&#146;, false, array(&#146;FieldToMatch&#146;));
</pre>
<p><a href="http://feedads.g.doubleclick.net/~a/f-gwR9CQ6Vkrdc0O_Q7gcHD4tBE/0/da"><img src="http://feedads.g.doubleclick.net/~a/f-gwR9CQ6Vkrdc0O_Q7gcHD4tBE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/f-gwR9CQ6Vkrdc0O_Q7gcHD4tBE/1/da"><img src="http://feedads.g.doubleclick.net/~a/f-gwR9CQ6Vkrdc0O_Q7gcHD4tBE/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NickPack?a=4-Bv-Q5hobY:CFByCfwlK8U:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=4-Bv-Q5hobY:CFByCfwlK8U:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NickPack?i=4-Bv-Q5hobY:CFByCfwlK8U:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=4-Bv-Q5hobY:CFByCfwlK8U:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=4-Bv-Q5hobY:CFByCfwlK8U:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NickPack?i=4-Bv-Q5hobY:CFByCfwlK8U:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=4-Bv-Q5hobY:CFByCfwlK8U:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/NickPack?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=4-Bv-Q5hobY:CFByCfwlK8U:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/NickPack?i=4-Bv-Q5hobY:CFByCfwlK8U:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=4-Bv-Q5hobY:CFByCfwlK8U:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/NickPack?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=4-Bv-Q5hobY:CFByCfwlK8U:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NickPack?i=4-Bv-Q5hobY:CFByCfwlK8U:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=4-Bv-Q5hobY:CFByCfwlK8U:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/NickPack?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NickPack/~4/4-Bv-Q5hobY" height="1" width="1"/>]]></content:encoded>
      <pubDate>Tue, 17 Nov 2009 08:11:02 +0000</pubDate>
    <feedburner:origLink>http://www.nickpack.com/article/zend-framework-greaterthan-equalto-validator</feedburner:origLink></item>
    <item>
      <title><![CDATA[Modified Pre-Order Tree Traversal with Zend_Db]]></title>
      <link>http://feedproxy.google.com/~r/NickPack/~3/jv4gLEU-728/modified-preorder-tree-traversal-with-zend-framework</link>
      <description><![CDATA[Hector Virgen has released a brilliant Zend_Db_Tab ...]]></description>
      <content:encoded><![CDATA[<p>Hector Virgen has released a brilliant Zend_Db_Table extension enabling simple use of the Modified Pre-order Tree Traversal pattern.</p>
<p>If you've never come across MPTT and are curious as to what it is and why, there is an <a href="http://www.sitepoint.com/print/hierarchical-data-database/">excellent article on sitepoint</a> explaining the whys &amp; what fors.</p>
<p>MPTT is used on this site for the site map, menus at the top and the breadcrumb navigation, due to the simplicity of retrieving parents and children, it is ideal for this purpose.</p>
<p>Hectors class simplifies the use of the pattern quite considerably, it is capable of building the traversal across the whole table just by a parent reference and provides simple methods to fetch a tree, to fetch all the ancestors of a row as well as all of the decendants of a row.</p>
<p><a href="http://blog.virgentech.com/2009/06/zenddbtable-enhancements.html">Hectors original post is on his blog</a> go there to grab the source</p>
<h2>Usage Examples</h2>
<p>To use the modified preorder tree traversal algorithm in your table, you will initially have to do just a little bit of work but once it is set up everything should be automated for you.</p>
<p>Firstly, you will need to alter the table in your database and add columns to store the "left" and "right" values. (Remember that 'left' and 'right' are reserved words in SQL - so use something else or your queries will fail!)</p>
<p>Next, you will need to create your table class by extending Virgen_Db_Table, and declare the traversal properties.</p>
<pre class="brush:php">&lt;?php 
class MyTree extends Virgen_Db_Table
{
    protected $_name = 'tree_example';
    protected $_traversal = array(
        'left'          =&gt; 'THE NAME OF YOUR LEFT COL HERE',
        'right'         =&gt; 'THE NAME OF YOUR RIGHT COL HERE',
        'column'        =&gt; 'THE NAME OF YOUR PRIMARY KEY COL HERE',
        'refColumn'     =&gt; 'THE NAME OF YOUR PARENT ID COL HERE'
    );
}</pre>
<p>Now when you insert a new record into your table, all of the left and right columns will be updated as necessary to reflect the new preorder tree.</p>
<p>If you have existing data in your table or want to rebuild the entire tree, Hector has provided a rebuildTreeTraversal()&nbsp;method.</p>
<pre class="brush:php">&lt;?php
$mytree = new MyTree();
$mytree-&gt;rebuildTreeTraversal();</pre>
<h4>Fetching Descendents of a Given Node</h4>
<p>Once your tree is built, you can fetch all descendents of a node with fetchAllDescendents(). The first argument is the node to fetch the descendents of. The node can be either an instance of Zend_Db_Table_Row_Abstract or the string/numeric value of the columns id (based on $_traversal['column']). You can optionally pass in a select object to use as the second argument, which will be used when selecting the descendents (this is where to do any joins or where clauses).</p>
<pre class="brush:php"> 
&lt;?php
// Fetch all of the children for row with the ID of 1 
$node = $mytree-&gt;find(1)-&gt;current();
$descendents = $mytree-&gt;fetchAllDescendents($node);
// Identical to:
$descendents = $mytree-&gt;fetchAllDescendents(1);
</pre>
<pre class="brush:php"> 
// With optional select object
$select = $mytree-&gt;select()-&gt;where('published = ?', 1)-&gt;limit(5);
$descendends = $mytree-&gt;fetchAllDescendents($node, $select);
</pre>
<h4>Fetching Ancestors of a Given Node</h4>
<p>You can also fetch the ancestors just as easily with fetchAllAncestors(). All ancestors from the immediate parent up to the root of the tree will be returned.</p>
<pre class="brush:php"> 
&lt;?php
 
$ancestors = $mytree-&gt;fetchAllAncestors($node);
</pre>
<h4>Fetching Nodes as a Tree</h4>
<p>You can fetch nodes as a tree by calling <code>$table-&gt;fetchTree()</code>. Its functionality is similar to fetchDescendents, except that it returns a modified rowset in that each row contains a <code>tree_depth</code> value.</p>
<pre class="brush:php"> 
&lt;?php
 
$tree = $mytree-&gt;fetchTree();
 
foreach ($tree as $node)&nbsp;{
    echo str_repeat(' ', $node-&gt;tree_depth *&nbsp;4) . $node-&gt;id . PHP_EOL;
}
</pre>
<h4>Restructuring the resultset for template iteration</h4>
<p>This site uses PHPTAL as its template engine, as there is no simple way (it is possible, but is vastly over-complicated) to programatically iterate through the resultset in its returned form, so a simple loop to place all the children of parent rows into an associative array was needed!</p>
<p>For this to work you need to alter your tree fetch statement to the following</p>
<pre class="brush:php"> 
&lt;?php
 
$tree = $mytree-&gt;fetchTree()-&gt;toArray();
</pre>
<p>and then loop through your tree like this</p>
<pre class="brush:php"> 
&lt;?php

$menu = array(); 
$ref = array();

      foreach( $tree as $d ) {
    	$d['Children'] = array();
        if( isset( $ref[ $d['Parent_ID'] ] )) {
            $ref[ $d['Parent_ID'] ]['Children'][ $d['Row_ID'] ] = $d;
            $ref[ $d['Row_ID'] ] =&amp; $ref[ $d['Parent_ID'] ]['Children'][ $d['Row_ID'] ];
        } else {
        	$menu[ $d['Row_ID'] ] = $d;
            $ref[ $d['Row_ID'] ] =&amp; $menu[ $d['Row_ID'] ];
        }
     }
</pre>
<p>You are then left with a structured multidimensional array ($menu).</p>
<p>To produce a set of nested uniform lists recursively in TAL to display your tree, you'll need something like this</p>
<pre class="brush:plain">
&lt;ul metal:define-macro="output_list" tal:condition="menu"&gt;
    &lt;li tal:repeat="list_item menu"&gt;
       ${list_item/Row_Name}
        &lt;tal:block tal:define="tree list_item/Children" metal:use-macro="output_list" /&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;tal:block metal:use-macro="output_list" /&gt;
</pre>
<p>A big thanks to Hector for his work on this</p>
<p>tqsfmu69b5</p>
<p><a href="http://feedads.g.doubleclick.net/~a/lut7K5yx_1bMzVjrN0fV3Fo-Mk8/0/da"><img src="http://feedads.g.doubleclick.net/~a/lut7K5yx_1bMzVjrN0fV3Fo-Mk8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/lut7K5yx_1bMzVjrN0fV3Fo-Mk8/1/da"><img src="http://feedads.g.doubleclick.net/~a/lut7K5yx_1bMzVjrN0fV3Fo-Mk8/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NickPack?a=jv4gLEU-728:Pqk6gE8DjDo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=jv4gLEU-728:Pqk6gE8DjDo:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NickPack?i=jv4gLEU-728:Pqk6gE8DjDo:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=jv4gLEU-728:Pqk6gE8DjDo:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=jv4gLEU-728:Pqk6gE8DjDo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NickPack?i=jv4gLEU-728:Pqk6gE8DjDo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=jv4gLEU-728:Pqk6gE8DjDo:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/NickPack?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=jv4gLEU-728:Pqk6gE8DjDo:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/NickPack?i=jv4gLEU-728:Pqk6gE8DjDo:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=jv4gLEU-728:Pqk6gE8DjDo:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/NickPack?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=jv4gLEU-728:Pqk6gE8DjDo:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NickPack?i=jv4gLEU-728:Pqk6gE8DjDo:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=jv4gLEU-728:Pqk6gE8DjDo:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/NickPack?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NickPack/~4/jv4gLEU-728" height="1" width="1"/>]]></content:encoded>
      <pubDate>Thu, 02 Jul 2009 13:26:28 +0000</pubDate>
    <feedburner:origLink>http://www.nickpack.com/article/modified-preorder-tree-traversal-with-zend-framework</feedburner:origLink></item>
    <item>
      <title><![CDATA[Free RBL Checker Tool]]></title>
      <link>http://feedproxy.google.com/~r/NickPack/~3/0J9sKyNZAu4/free-mail-blacklist-checker</link>
      <description><![CDATA[I have written an AJAX based RBL checker tool as a ...]]></description>
      <content:encoded><![CDATA[<p>I have written an AJAX based RBL checker tool as an extension to this site, in the hope that it is useful.</p>
<p>You can access it at <a href="/tools/rblcheck">http://www.nickpack.com/tools/rblcheck</a></p>
<p>Simply enter any IPv4 address into it and it will search a pre-defined list of RBL's for you, and will return details if their are any.</p>
<p>&nbsp;</p>
<p>I am looking for suggestions for additional RBL lists to add to it, so please comment here if you need one that isnt there already..</p>
<p>Any feedback would be appreciated also.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/1Ne1nIaXxlxzMPtNs8NBvlp72AQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/1Ne1nIaXxlxzMPtNs8NBvlp72AQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/1Ne1nIaXxlxzMPtNs8NBvlp72AQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/1Ne1nIaXxlxzMPtNs8NBvlp72AQ/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NickPack?a=0J9sKyNZAu4:lVCNRCSs9Gs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=0J9sKyNZAu4:lVCNRCSs9Gs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NickPack?i=0J9sKyNZAu4:lVCNRCSs9Gs:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=0J9sKyNZAu4:lVCNRCSs9Gs:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=0J9sKyNZAu4:lVCNRCSs9Gs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NickPack?i=0J9sKyNZAu4:lVCNRCSs9Gs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=0J9sKyNZAu4:lVCNRCSs9Gs:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/NickPack?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=0J9sKyNZAu4:lVCNRCSs9Gs:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/NickPack?i=0J9sKyNZAu4:lVCNRCSs9Gs:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=0J9sKyNZAu4:lVCNRCSs9Gs:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/NickPack?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=0J9sKyNZAu4:lVCNRCSs9Gs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NickPack?i=0J9sKyNZAu4:lVCNRCSs9Gs:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=0J9sKyNZAu4:lVCNRCSs9Gs:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/NickPack?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NickPack/~4/0J9sKyNZAu4" height="1" width="1"/>]]></content:encoded>
      <pubDate>Mon, 29 Jun 2009 10:30:59 +0000</pubDate>
    <feedburner:origLink>http://www.nickpack.com/article/free-mail-blacklist-checker</feedburner:origLink></item>
    <item>
      <title><![CDATA[XBOX360 Error codes - What the RROD actually means]]></title>
      <link>http://feedproxy.google.com/~r/NickPack/~3/Ut-1I_94-88/xbox360-rrod-error-codes-and-what-they-mean</link>
      <description><![CDATA[If there is a problem with the Xbox360 The LEDs in ...]]></description>
      <content:encoded><![CDATA[<p>If there is a problem with the Xbox360 The LEDs in the ring of light will flash in a particular pattern.</p>
<p>The pattern itself leads some insight to the problem. Certain patterns will lead to numbered error codes which will provide further insight to the problem. The numbered error codes are described below their corresponding LED code.</p>
<p><em>Quick Links</em></p>
<ul>
<li><a href="#sec1234red">Sections 1,2,3 &amp; 4 are flashing red</a></li>
<li><a href="#sec134red">Sections 1,3 &amp; 4 are flashing red</a></li>
<li><a href="#sec13red">Sections 1 &amp; 3 are flashing red</a></li>
<li><a href="#sec4red">Section 4 is flashing red</a></li>
<li><a href="#secondarycodes">Secondary Error Codes</a></li>
<li><a href="#resetcodes">Console Reset Codes</a></li>
<li><a href="#senditin">Sending your console in for repair</a></li>
<li><a href="#thanks">Credits/Thanks</a></li>
</ul>
<h3>XBOX 360 ERROR Codes</h3>
<p>After reading this guide if you'd like to discuss the problems you're experiencing with others you can do so in the following thread: <a href="http://forums.xbox-scene.com/index.php?showtopic=462099">http://forums.xbox-scene.com/index.php?showtopic=462099</a> these are the codes we know so far...</p>
<p>Please contribute if you know of new codes that are not part of this list.</p>
<hr />
<h3><a id="sec1234red" name="sec1234red"></a>Sections 1, 2, 3, and 4 are flashing red - <em>The AV cable cannot be detected</em></h3>
<h4>THINGS TO TRY</h4>
<ol>
<li>Make sure that the AV cable is correctly connected to the <a href="http://forums.xbox-scene.com/index.php?showtopic=484726">Xbox</a> 360 console.</li>
<li>Disconnect the AV cable from <a href="http://forums.xbox-scene.com/index.php?showtopic=484726">the Xbox 360</a> console, and then reconnect the AV cable to the Xbox 360 console.</li>
<li>If the four flashing red lights continue to flash, try wiping the metal area of the AV pack with a dry cloth. The metal area is the end that plugs into the console. Wipe the metal area thoroughly, and then try the AV Pack again.</li>
<li>If the AV cable is correctly connected but the four red lights are still flashing, substitute a different AV cable if you have one available.</li>
</ol> 
<hr />
<h3><a id="sec134red" name="sec134red"></a>Sections 1, 3, and 4 are flashing red - <em>General Hardware Failure</em></h3>
<p>Check the secondary Error Code per the instructions in the section below.</p>
<h4>THINGS TO TRY</h4>
<ol>
<li>Try restarting the console.</li>
<li>If restarting the console does not resolve the behavior, follow these steps:     
<ul>
<li>Turn the console off.</li>
<li>Unplug all the power and AV cables from the console.</li>
<li>Unplug the power cord from the wall socket.</li>
<li>Firmly reconnect all the cables.</li>
<li>Turn on the console.</li>
</ul>
</li>
<li>If these steps do not resolve the behavior, turn the console off, remove the hard drive, and then turn on the console. If the 3x Red LED error light is no longer displayed, turn the console off, re-attach the hard drive, and then turn on the console.</li>
<li>Also examine the lights on the power supply. When you turn on the console, the power supply light should illuminate green even if the three lights on the RoL flash red.</li>
</ol> 
<hr />
<h3><a id="sec13red" name="sec13red"></a>Sections 1, and 3 are flashing red - <em>Overheating</em></h3>
<p>Alternatively Overheating can be caused by the console locking up or "freezing" after a set amount of time. Lockups that occur at a specific point in a <a href="http://forums.xbox-scene.com/index.php?showtopic=484726">game</a> are generally problems with the game itself and not caused by overheating.</p>
<h4>THINGS TO TRY</h4>
<ol>
<li>Let the Xbox 360 console cool. <br /> Note You may have to wait several hours for the console to cool enough. Do not turn on the console when the console is hot.</li>
<li>Verify that the console has sufficient ventilation and that the fan is operating. For more information about ventilation, see the "More Information" section.</li>
</ol>
<h4>PREVENTION SUGGESTIONS</h4>
<p>To try to prevent this problem, use the following precautions:</p>
<ul>
<li>Do not block any ventilation openings on the Xbox 360 console.</li>
<li>Do not put the Xbox 360 console on a bed, on a sofa, or on any other soft surface that may block ventilation openings.</li>
<li>Do not put the Xbox 360 console in a confined space, such as a bookcase, a rack, or a stereo cabinet, unless the space is well-ventilated.</li>
<li>Do not put the Xbox 360 console near any heat source, such as a radiator, a heat register, a stove, or an amplifier.</li>
</ul>
<p><strong>DO NOT EVER PUT YOUR CONSOLE IN THE FREEZER OR OUT IN COLD WEATHER</strong></p>
<p>Some people think that doing this might help "fix" an overheating console, in fact doing so could cause even bigger problems. Electronic devices like your console are made to function at and around room temperature, extreme cold temperatures can often cause just as many problems as extreme warm temperatures (such as overheating). Also if the console is located in a dramatically cold area while running, the difference in temperature between the hot console and cold air can create condensation which in turn will short out your console making the situation far worse. Condensation will happen more quickly if your console is overheating due to the greater difference in temperature. In short... DON'T DO IT.</p>
<p>A more aggressive Solution to overheating is to improve the cooling system of the console. The best solution is to <a href="http://forums.xbox-scene.com/index.php?showtopic=522113">replace the thermal compound</a>. If you attempt this you do so at your own risk. If you're console is still under warranty it is recommended that you contact MS for a replacement before attempting to fix it yourself.</p>
<hr />
<h3><a id="sec4red" name="sec4red"></a>Section 4 is flashing red - <em>Hardware Failure</em></h3>
<p><strong>The Specific Type of hardware failure can be determined by the error code displayed on the screen.</strong></p>
<p><strong>If the screen is blank or you would like additional information follow the instructions for determining the secondary error code in the section below.</strong></p>
<dl> <dt>E45</dt> <dd>Unknown (possibly dashboard update related)</dd> <dt>E64</dt> <dd>DVD Drive Error.... DVD Timeout, Wrong firmware, dvd is without f/w chip, etc.</dd> <dt>E65</dt> <dd>DVD Drive Error.... DVD Timeout, Wrong firmware, dvd is without f/w chip, etc. This can also be caused by the tray not being fully closed on boot.</dd> <dt>E66</dt> <dd>DVD Drive Error: DVD model, or version does not match that of the version expected by the dashboard. OR the firmware version on the drive is older then the firmware version expected by the dashboard. Make sure the DVD drive is of the same version originally included with the console and that it is using either the original firmware included with the console or newer.</dd> <dt>E67</dt> <dd>Hard Drive Error... It could be a problem with the Hard Drive itself or a problem with the internal connection to the hard drive, Try removing the hard drive and playing without it.</dd> <dt>E68</dt> <dd>Voltage Error... This error means that the Xbox 360 has insufficent power to function properly. This can be caused by an error in the hard drive or the fans that make them suck up too much power, it can also be caused if you have unnecessary accessories attached to the console like an external fan unit. Attempt to remove unnecessary accessories first, and then necessary components such as the hard drive and USB devices. If you have any case mods you may want to investigate those as well.</dd> <dt>E69</dt> <dd>Hard Drive Error... It could be a problem with the Hard Drive itself or a problem with the internal connection to the hard drive, Try removing the hard drive and playing without it.</dd> <dt>E71</dt> <dd>Possibly a dashboard update error, Check below in the "Console Reset Codes" for instructions. If that does not work there is no other solution and the console must be sent back to MS for repair.</dd> <dt>E72</dt> <dd>Error with the NAND flash</dd> <dt>E73</dt> <dd>General Hardware Error: Ethernet port... this error is caused by a problem with the Ethernet port.</dd> <dt>E74</dt> <dd>There is high chance it's a scaler chip problem (the "ANA" or "HANA" chip near the AV cable connection) it can also be caused by a faulty AV cable so check that first. In some cases it is a problem with the GPU and may be repairable by doing the x-clamp replacement (see error 0102)</dd> <dt>E76</dt> <dd>This error deals with the Ethernet port's controller chip, a dead chip may not cause the error but removing the Ethernet controller chip does, it may also be caused by other Ethernet related problems.</dd> <dt>E79</dt> <dd>Hard Drive Error... It could be a problem with the Hard Drive itself or a problem with the internal connection to the hard drive, Try removing the hard drive and playing without it. <br /> According to tmbinc: E79 is the error code if xam.xex could not be started, i.e. probably a file system corruption.</dd> <dt>E80</dt> <dd>Wrong LDV version in NAND Flash. This is in new dashboard. You have the update but haven't R3T6 resistor. You can:     -Downgrade to old dashboard, solder back the resistor and then update your xbox     -If you have CPU Key, get current NAND Flash image and fix LDV (just add 1 up to latest kernel). (See error 1100) </dd> </dl> 
<hr />
<h3><a id="secondarycodes" name="secondarycodes"></a>Secondary Error Codes</h3>
<p>The specific type of hardware failure can be determined by a "hidden" error code</p>
<ol>
<li>Turn your 360 on, and wait for the red ring of death to show up.</li>
<li>Press and hold the sync button on the front of the 360 (Has a wireless icon next to it), keep it held down and press the eject button on the 360's DVD drive.</li>
<li>The lights will now indicate the first number in the error code.</li>
<li>Let go of the eject button and press it again.</li>
<li>The lights will now indicate the second number in the error code.</li>
<li>Let go of the eject button and press it again..</li>
<li>The lights will now indicate the third number in the error code..</li>
<li>Let go of the eject button and press it again.</li>
<li>The lights will now indicate the last number in the error code.</li>
<li>Let go of the eject button and press it again.</li>
<li>The lights will then turn back into the red ring of death.</li>
</ol>
<p><em>Key To Error Codes</em></p>
<ul>
<li><strong>All 4 LED's flashing = 0</strong></li>
<li><strong>1 LED flashing = 1</strong></li>
<li><strong>2 LED's flashing = 2</strong></li>
<li><strong>3 LED's flashing = 3</strong></li>
</ul>
<dl> <dt>0001</dt> <dd>power supply problem</dd> <dt>0002</dt> <dd>Network Interface problem (might be fixed by loosening the x-clamps) </dd> <dt>0003</dt> <dd>Power problem could be the PSU could be the GPU/CPU, somehow the console isn't getting clean power from the power supply.</dd> <dt>0010</dt> <dd>There is a problem with the Southbridge Chip usually dealing with how it connects to the mainboard (cold solder joint/bridged solder joints)</dd> <dt>0011</dt> <dd>CPU over heating - If you are receiving this error after disassembling your console make sure to all 8 of the heatsinc screws are tightened securely to the board/heatsink holes.</dd> <dd>0012</dd> <dd>GPU over heating -ensure your x-clamps are installed properly.</dd> <dt>0013</dt> <dd>RAM over heating</dd> <dt>0020</dt> <dd>GPU Malfunction, similar to error 0102</dd> <dt>0021</dt> <dd>This can be caused by two completely different things either:<br /> A. DVD Drive Time out - Can be caused by problems with a firmware flash. This is also speculated to sometime be caused by a problem with the southbridge chipset on the motherboard based on how it connects to the DVD drive.     B. GPU error, generally caused by a poor connection to the mainboard (cold solder joints/bridged solder joints) See error 102 for more information</dd> <dt>0022</dt> <dd>CPU error, generally caused by a poor connection to the mainboard (cold solder joints/bridged solder joints). This can also be triggered by an error with the TSOP. </dd> <dt>0023</dt> <dd>(not yet known)</dd> <dt>0030</dt> <dd>Problem with temperature control</dd> <dt>0031</dt> <dd>could be caused by a short between the heatsink and surrounding capacitors</dd> <dt>0032</dt> <dd>(not yet known)</dd> <dt>0033</dt> <dd>(not yet known)</dd> <dt>0100</dt> <dd>Likely a cold solder join in GPU or Ram chips (see error 0102)</dd> <dt>0101</dt> <dd>(not yet known)</dd> <dt>0102</dt> <dd>Error in the "Digital Backbone" (CPU/GPU/RAM), this is usually caused by a cold solder joint between the GPU and the mainboard.<br /> There are two theories to fixing this one deals with <a href="http://forums.xbox-scene.com/index.php?showtopic=595746">the "X" clamps that hold down the chips</a>. The other involves <a href="http://forums.xbox-scene.com/index.php?s=&amp;showtopic=484726&amp;view=findpost&amp;p=3550914">re-Heating the chips</a>. <br /> DO NOT attempt either of these if your console is still under warranty. If your console is still under warranty return it to the store where it was purchased or call MS to have it replaced.</dd> <dt>0103</dt> <dd>GPU Error this is usually caused by bridged solder points where the GPU connects to the mainboard. see error 0102 for more detailed information</dd> <dt>0110</dt> <dd>Ram error, this is caused by a cold or bridged solder joint on one of the Ram chips.</dd> <dt>0200</dt> <dd>(not yet known)</dd> <dt>0203</dt> <dd>over heating GPU possibly due to lack of thermal compound.</dd> <dt>1000</dt> <dd>Kernel can't be launched/signature in NAND Flash chip is broken! It could be possible after bad update. <a href="http://forums.xbox-scene.com/index.php?showtopic=484726&amp;st=615&amp;p=4156375&amp;#entry4156375">http://forums.xbox-scene.com/index.php?sho...p;#entry4156375</a> This might also be caused by a bad SATA cable. </dd> <dt>1001</dt> <dd>DVD Drive Error, either incorrect firmware or DVD Time out.</dd> <dt>1002</dt> <dd>DVD Drive Error, likely a firmware error, drive can eject, read, and write under windows but errors on console, replacing original firmware should fix issue. </dd> <dt>1003</dt> <dd>Hard Drive Error... It could be a problem with the Hard Drive itself or a problem with the internal connection to the hard drive, Try removing the hard drive and playing without it</dd> <dt>1010</dt> <dd>Hard Drive Error, Can be caused buy a corrupt or missing eProm. See also E68 above </dd> <dt>1011</dt> <dd>(not yet known)</dd> <dt>1012</dt> <dd>(not yet known)</dd> <dt>1013</dt> <dd>(not yet known) possibly a dashboard update error</dd> <dt>1020</dt> <dd>(not yet known)</dd> <dt>1021</dt> <dd>(not yet known)</dd> <dt>1022</dt> <dd>There is high chance it's a scaler chip problem (the "ANA" or "HANA" chip near the AV cable connection) it can also be caused by a faulty AV cable so check that first. In some cases it is a problem with the GPU and may be repairable by doing the x-clamp replacement (see error 0102) </dd> <dt>1023</dt> <dd>DVD drive not connected, connect DVD drive to boot </dd> <dt>1030</dt> <dd>This error deals with the Ethernet port's controller chip, a dead chip may not cause the error but removing the Ethernet controller chip does, it may also be caused by other Ethernet related problems.</dd> <dt>1031</dt> <dd>This error is for power problems with the RAM chips. It might be cause by a short between the heat sink and resistors or by more serious problems with the RAM. [<a href="http://forums.xbox-scene.com/index.php?showtopic=660069">more info</a>] </dd> <dt>1032</dt> <dd>(not yet known)</dd> <dt>1033</dt> <dd>it could be cpu/gpu related or it could be psu related, not much info is known for sure. </dd> <dt>1100</dt> <dd>Wrong LDV version in NAND Flash. This is in new dashboard. You have the update but haven't R3T6 resistor. You can:<br /> -Downgrade to old dashboard, solder back the resistor and then update your xbox<br /> -If you have CPU Key, get current NAND Flash image and fix LDV (just add 1 up to latest kernel). (see error E80)</dd> <dt>1444 and up</dt> <dd>There is no "4" in the error codes four lights is a "0" go back and check your code again.</dd> </dl> 
<hr />
<h3><a id="resetcodes" name="resetcodes"></a>Console Reset Codes</h3>
<h4>Clear All Installed Game Updates and Console Cache</h4>
<ol>
<li>Go to the "system" blade</li>
<li>Select "memory"</li>
<li>Press Y on the HD symbol</li>
<li>Press X,X, Left Bumper, Right Bumper, X,X</li>
<li>A message will appear saying: "Do you want to perform maintenance on your Xbox 360 storage devices?"</li>
<li>Select Yes</li>
</ol>
<h4>Clear Any Failed system updates that cause the console to error.</h4>
<ol>
<li>With the console off, press and hold the sync up button (the small white one)</li>
<li>While holding the sync button press the power button to turn on the console</li>
<li>Continue to hold the sync button until the Console has booted up completely.</li>
<li>During the boot process the console should clear any failed updates, allowing you to use it normally.</li>
</ol> 
<hr />
<h3><a id="senditin" name="senditin"></a>Sending in your Console for Repair</h3>
<p>If none of the above suggestions work, contact MS customer support get get a support ticket started. If your console is still under warranty <strong>DO NOT</strong> attempt to open it and fix it yourself. MS will fix it promptly and for free and if you open it you loose the free support.</p>
<p>Check the documentation that came with your Xbox 360 for contact information.</p>
<p>In the US Customer Support can be reached at <strong>1-800-4-MY-XBOX</strong> (1-800-469-9269)</p>
<hr />
<h3>Thanks to the guys over at The <a href="http://forums.xbox-scene.com">Scenyx Entertainment Community</a> for allowing us to mirror this.</h3>
<p>After reading this guide if you'd like to discuss the problems you're experiencing with others you can do so in the following thread:<br /> <a href="http://forums.xbox-scene.com/index.php?showtopic=462099">http://forums.xbox-scene.com/index.php?showtopic=462099</a></p>
<p><strong>Thanks to community members for their help:</strong></p>
<ul>
<li>posure</li>
<li>diacronic</li>
<li>XGC xINSANITYx</li>
<li>tommiwan</li>
<li>Team Modfreakz</li>
<li>neoed30</li>
<li>Xfab29</li>
<li>rsintx</li>
<li>BenS</li>
<li>leorimolo</li>
<li>CajunSniper</li>
<li>gwashington42490</li>
<li>G0t M4xx 21</li>
<li>mp3boy</li>
<li>bluefalcon</li>
<li>ethylique</li>
<li>MatrixNeo</li>
<li>sodiumba</li>
<li>Taher</li>
<li>sniper68500</li>
<li>fierygt</li>
<li>letsmod</li>
<li>maysam</li>
<li>fire4adrymouth</li>
<li>Chickan</li>
</ul>
<p>Very Special Thanks to <strong>sowa99</strong> who has single-handedly identified about half of the secondary error codes.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/j1BJaHx7fSc24IqM3rNjy_EmokA/0/da"><img src="http://feedads.g.doubleclick.net/~a/j1BJaHx7fSc24IqM3rNjy_EmokA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/j1BJaHx7fSc24IqM3rNjy_EmokA/1/da"><img src="http://feedads.g.doubleclick.net/~a/j1BJaHx7fSc24IqM3rNjy_EmokA/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NickPack?a=Ut-1I_94-88:PeQ_OGqHRH8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=Ut-1I_94-88:PeQ_OGqHRH8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NickPack?i=Ut-1I_94-88:PeQ_OGqHRH8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=Ut-1I_94-88:PeQ_OGqHRH8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=Ut-1I_94-88:PeQ_OGqHRH8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NickPack?i=Ut-1I_94-88:PeQ_OGqHRH8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=Ut-1I_94-88:PeQ_OGqHRH8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/NickPack?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=Ut-1I_94-88:PeQ_OGqHRH8:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/NickPack?i=Ut-1I_94-88:PeQ_OGqHRH8:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=Ut-1I_94-88:PeQ_OGqHRH8:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/NickPack?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=Ut-1I_94-88:PeQ_OGqHRH8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NickPack?i=Ut-1I_94-88:PeQ_OGqHRH8:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=Ut-1I_94-88:PeQ_OGqHRH8:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/NickPack?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NickPack/~4/Ut-1I_94-88" height="1" width="1"/>]]></content:encoded>
      <pubDate>Thu, 02 Apr 2009 11:02:00 +0000</pubDate>
    <feedburner:origLink>http://www.nickpack.com/article/xbox360-rrod-error-codes-and-what-they-mean</feedburner:origLink></item>
    <item>
      <title><![CDATA[Hello World Example WHM Plugin]]></title>
      <link>http://feedproxy.google.com/~r/NickPack/~3/_cwDW6kW_9g/hello-world-example-whm-plugin</link>
      <description><![CDATA[This is a simple hello world example plugin skelet ...]]></description>
      <content:encoded><![CDATA[<p>This is a simple hello world example plugin skeleton for WHM plugins, intended primarily to give people somewhere to start.</p>
<pre class="brush: perl;">#!/usr/bin/perl
#WHMADDON:helloworld:Hello World &lt;b&gt;Example&lt;/b&gt;

###############################################################################
# This is an example hello world WHM plugin feel free to modify it as you see fit
###############################################################################
# Load general use case perl modules
use lib '/usr/local/cpanel';
use Cpanel::cPanelFunctions ();
use Cpanel::Form            ();
use Cpanel::Config          ();
use Whostmgr::HTMLInterface ();

use Whostmgr::ACLS          ();
###############################################################################
print "Content-type: text/html\r\n\r\n";
# Check user has root permissions
Whostmgr::ACLS::init_acls();
if ( !Whostmgr::ACLS::hasroot() ) {
# User is not root, tell them where to go
print "You need to be root to see the hello world example.\n";

exit();
}

# Parse input parameters from GET and POST into $FORM{} for later use
my %FORM     = Cpanel::Form::parseform();

# Print a WHM Header
Whostmgr::HTMLInterface::defheader( "Hello World Example Plugin",'/path/to/logo.gif', '/cgi/addon_helloworld.cgi' );

# Print General Output
print "&lt;p&gt;Hello world indeed...&lt;/p&gt;";

# End Example

1;
</pre>
<p><a href="http://feedads.g.doubleclick.net/~a/MqubrnY9SR7T5k7As-q0qiCqWE8/0/da"><img src="http://feedads.g.doubleclick.net/~a/MqubrnY9SR7T5k7As-q0qiCqWE8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/MqubrnY9SR7T5k7As-q0qiCqWE8/1/da"><img src="http://feedads.g.doubleclick.net/~a/MqubrnY9SR7T5k7As-q0qiCqWE8/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NickPack?a=_cwDW6kW_9g:Yd_RvONc41s:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=_cwDW6kW_9g:Yd_RvONc41s:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NickPack?i=_cwDW6kW_9g:Yd_RvONc41s:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=_cwDW6kW_9g:Yd_RvONc41s:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=_cwDW6kW_9g:Yd_RvONc41s:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NickPack?i=_cwDW6kW_9g:Yd_RvONc41s:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=_cwDW6kW_9g:Yd_RvONc41s:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/NickPack?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=_cwDW6kW_9g:Yd_RvONc41s:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/NickPack?i=_cwDW6kW_9g:Yd_RvONc41s:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=_cwDW6kW_9g:Yd_RvONc41s:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/NickPack?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=_cwDW6kW_9g:Yd_RvONc41s:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NickPack?i=_cwDW6kW_9g:Yd_RvONc41s:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=_cwDW6kW_9g:Yd_RvONc41s:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/NickPack?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NickPack/~4/_cwDW6kW_9g" height="1" width="1"/>]]></content:encoded>
      <pubDate>Wed, 10 Dec 2008 07:00:00 +0000</pubDate>
    <feedburner:origLink>http://www.nickpack.com/article/hello-world-example-whm-plugin</feedburner:origLink></item>
    <item>
      <title><![CDATA[WHM RBL Checker Plugin]]></title>
      <link>http://feedproxy.google.com/~r/NickPack/~3/LLkQwdGpc4E/free-whm-rbl-checker-plugin</link>
      <description><![CDATA[Description
This is a basic plugin for Web Host M ...]]></description>
      <content:encoded><![CDATA[<h2>Description</h2>
<p>This is a basic plugin for Web Host Manager, for checking an IPv4 address in RBL's, written whilst I was experimenting with WHM's API's and perl in general.</p>
<p>I am releasing it as open source under the GPL in the hope that it might be useful to someone, perl is not my first language so please feel free to point out anything which you think needs improving (which I am almost certain bits of it will!)</p>
<p>I intend to spend some solid time on improving this, but for now, the basic script!</p>
<p>The plugin uses WHM's perl modules &amp; the YUI library provided in all cPanel installations, its display is similar to that of most WHM functions.</p>
<h2>Screenshots</h2>
<p><a title="RBL Checker Screenshot 1" rel="colorbox" href="/media/screens/rblcheck1.jpg">Screenshot 1</a> | <a title="RBL Checker Results" rel="colorbox" href="/media/screens/rblcheck2.jpg">Screenshot 2</a></p>
<h2>License</h2>
<p>This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.</p>
<p>This program is distributed in the hope that it will be useful,     but WITHOUT ANY WARRANTY; without even the implied warranty of     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the     GNU General Public License for more details.</p>
<p>You should have received a copy of the GNU General Public License     along with this program.  If not, see <a href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a></p>
<h2>Installation Instructions</h2>
<p>For those of you who'd like to look at the code first: <a href="/media/downloads/RBLChecker.tar">Direct Download of the Package</a></p>
<p>As root on your cPanel server, run the following commands to install the plugin.</p>
<pre class="brush: plain;"> cd /usr/local/src</pre>
<p>Download the package</p>
<pre class="brush: plain;">wget http://www.nickpack.com/media/downloads/RBLChecker.tar</pre>
<p>Extract the package</p>
<pre class="brush: plain;">tar -xvf RBLChecker.tar</pre>
<p>Change into the source directory</p>
<pre class="brush: plain;">cd RBLChecker</pre>
<p>Run the installer script</p>
<pre class="brush: plain;">sh install.sh</pre>
<p>Change out of the source directory</p>
<pre class="brush: plain;">cd ..</pre>
<p>Remove the source directory and downloaded package</p>
<pre class="brush: plain;">rm -rfv /usr/local/src/RBL*</pre>
<p>The plugin should now be installed, all the install stuff removed and the plugin now accessible through the plugins panel in WHM (If you cant see it, refresh the page in your browser)</p>
<h2>Security</h2>
<p>The plugin presently will only run as root from WHM, I dont have resellers and therefore had no need to make this available to them.</p>
<p>The script uses the cPanel::SafeFile perl module for file opening.</p>
<p>The code is freely readable, so feel free to check it over before you run it.</p>
<h2>Dependencies</h2>
<p>The script has 3 dependencies (the last two are installed by the install.sh script)</p>
<p>1. cPanel/WHM (Obviously)</p>
<p>2. Mail::RBL</p>
<p>3. RegExp::Common</p>
<h2>Configuration</h2>
<h3>Adding and removing RBL's from the check</h3>
<p>In /etc/nrbl you will see a file called rblists.conf, this is where the script gets its lists to check from, feel free to add your own to this file, they are checked in the order they appear in this file.</p>
<p>The script expects RBLs in the following format - 1 per line:</p>
<pre class="brush: plain;"> Blacklist Name:uri.oflist.com </pre>
<p>Presently this file has no support for comments, this is something I plan to add.</p>
<h2>Support</h2>
<p>Please feel free to contact me if you need help, although most shouldnt need it due to the simplicity of the script.</p>
<h2>Known Bugs</h2>
<p>Trivial Display Bug - Due to a change in WHM::UI, header logo isnt presently rendering - awaiting fix from cPanel (Other third party scripts such as csf experiencing same bug)</p>
<h2>Change Log</h2>
<h3>1b</h3>
<p>Following an update to the cPanel internal YUI library, switch to use this instead of calling the API's directly from Yahoo - this prevents security warnings under SSL</p>
<p>Added YUI Container to indicate check is running (upcp style dialog)</p>
<h3>1a</h3>
<p>Added basic WHM branding via WHM::UI</p>
<p><a href="http://feedads.g.doubleclick.net/~a/VpX5kPwtg4WJoIfqJr0jgfqFmsw/0/da"><img src="http://feedads.g.doubleclick.net/~a/VpX5kPwtg4WJoIfqJr0jgfqFmsw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/VpX5kPwtg4WJoIfqJr0jgfqFmsw/1/da"><img src="http://feedads.g.doubleclick.net/~a/VpX5kPwtg4WJoIfqJr0jgfqFmsw/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NickPack?a=LLkQwdGpc4E:pm9xBOmf87E:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=LLkQwdGpc4E:pm9xBOmf87E:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NickPack?i=LLkQwdGpc4E:pm9xBOmf87E:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=LLkQwdGpc4E:pm9xBOmf87E:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=LLkQwdGpc4E:pm9xBOmf87E:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NickPack?i=LLkQwdGpc4E:pm9xBOmf87E:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=LLkQwdGpc4E:pm9xBOmf87E:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/NickPack?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=LLkQwdGpc4E:pm9xBOmf87E:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/NickPack?i=LLkQwdGpc4E:pm9xBOmf87E:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=LLkQwdGpc4E:pm9xBOmf87E:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/NickPack?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=LLkQwdGpc4E:pm9xBOmf87E:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NickPack?i=LLkQwdGpc4E:pm9xBOmf87E:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=LLkQwdGpc4E:pm9xBOmf87E:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/NickPack?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NickPack/~4/LLkQwdGpc4E" height="1" width="1"/>]]></content:encoded>
      <pubDate>Fri, 21 Nov 2008 07:00:00 +0000</pubDate>
    <feedburner:origLink>http://www.nickpack.com/article/free-whm-rbl-checker-plugin</feedburner:origLink></item>
    <item>
      <title><![CDATA[Steam/Half-Life on Mac OSX]]></title>
      <link>http://feedproxy.google.com/~r/NickPack/~3/7tMGiA6UVSg/playing-the-halflife-series-under-macosx</link>
      <description><![CDATA[Plenty of people have said in the past that it is  ...]]></description>
      <content:encoded><![CDATA[<p>Plenty of people have said in the past that it is impossible to run half-life and associated games on a mac under OSX.</p>
<p>This is complete fiction as I quite happily play half-life on my Mac Under OSX.</p>
<p>All you need to make this work is an Intel Mac, and a wonderful piece of software that I have used in the past on Linux systems to run windows apps.</p>
<p>The software is called <a href="http://www.codeweavers.com/products/cxmac/">CrossOver Mac</a>, which is basically a nice front-end for <a href="http://www.winehq.org/">Wine</a> with installer capabilities.</p>
<p>I can confirm that I have played the following games perfectly normally on my mac mini under crossover:</p>
<ul>
<li>Half-Life</li>
<li>Opposing Force</li>
<li>Blue Shift</li>
<li>Team Fortress Classic</li>
<li>Counter Strike</li>
</ul>
<p>Games I've yet to test are the later source series and half-life 2 but I will post back when I have run them up.</p>
<p>I am yet to try Cider but from what Ive been told thats supposed to run windows games far better.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/J4PkeiwA6-yf8lmsZWmEBqhN8H4/0/da"><img src="http://feedads.g.doubleclick.net/~a/J4PkeiwA6-yf8lmsZWmEBqhN8H4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/J4PkeiwA6-yf8lmsZWmEBqhN8H4/1/da"><img src="http://feedads.g.doubleclick.net/~a/J4PkeiwA6-yf8lmsZWmEBqhN8H4/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NickPack?a=7tMGiA6UVSg:LgiiFTKyGqM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=7tMGiA6UVSg:LgiiFTKyGqM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NickPack?i=7tMGiA6UVSg:LgiiFTKyGqM:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=7tMGiA6UVSg:LgiiFTKyGqM:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=7tMGiA6UVSg:LgiiFTKyGqM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NickPack?i=7tMGiA6UVSg:LgiiFTKyGqM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=7tMGiA6UVSg:LgiiFTKyGqM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/NickPack?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=7tMGiA6UVSg:LgiiFTKyGqM:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/NickPack?i=7tMGiA6UVSg:LgiiFTKyGqM:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=7tMGiA6UVSg:LgiiFTKyGqM:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/NickPack?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=7tMGiA6UVSg:LgiiFTKyGqM:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NickPack?i=7tMGiA6UVSg:LgiiFTKyGqM:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=7tMGiA6UVSg:LgiiFTKyGqM:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/NickPack?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NickPack/~4/7tMGiA6UVSg" height="1" width="1"/>]]></content:encoded>
      <pubDate>Wed, 09 Apr 2008 07:00:00 +0000</pubDate>
    <feedburner:origLink>http://www.nickpack.com/article/playing-the-halflife-series-under-macosx</feedburner:origLink></item>
    <item>
      <title><![CDATA[Exim ACL examples for shared hosting]]></title>
      <link>http://feedproxy.google.com/~r/NickPack/~3/DDZNheeB_RM/exim-acl-usage-in-shared-hosting-environments</link>
      <description><![CDATA[My previous ACL postings are not as one complete i ...]]></description>
      <content:encoded><![CDATA[<p>My previous ACL postings are not as one complete item, the following list of ACL's are recommended for shared hosting environments where users authenticate locally to send mail from dynamic address space.</p>
<p>Use of PBL's and suchlike would be much better but aren't entirely practical unless you have only business customers that ALL have static IP's (Which in reality will never happen) or seperate recieving SMTP servers from the ones your customers relay out through.</p>
<p>There is one part of this that I often get asked about so I will explain myself and let you know the implications of doing so before you do it.</p>
<p>I run my RBL checks at the HELO/EHLO stage of SMTP transactions, some will agree with me on this, others will beg to differ.</p>
<h2>HELO/EHLO RBL checks - why and why not</h2>
<p>I deliberatly reject SMTP transactions if the connecting address is in an RBL because:</p>
<ol>
<li>If the sending address is in an RBL, there is a fair chance that they are in there because they have spammed/are a zombie machine - and who wants those on their network - I don't!</li>
<li>Exim likes to fill the logs with - Unexpected disconnection messages if you do it at rcpt stage.</li>
<li>Although negligable, why create more load processing the rcpt stage when you won't accept mail from that address anyway?</li>
<li>Most of my shared hosting clients are businesses with Business DSL &amp; IT companies that can be contacted to remedy the situation fairly quickly.</li>
<li>If the worst comes to the worst, you can temporarily remove the checks of the nuisance RBL quickly &amp; easily.</li>
<li>If the offending client IP is dynamic, getting the client to turn their router/modem off and back on again tends to pick up another IP.</li>
</ol>
<p>The downside with the above is the distinct inability to whitelist IP's, even SMTP auth clients will fail at this stage.</p>
<p>My personal experience of this, is that it hasn't been too much of a problem for me - but then the company I work for doesn't have hundreds of servers to keep an eye on.</p>
<p>I will admit, it might not be entirely practical to implement with larger hosts but I haven't personally had any trouble.</p>
<h2>The ACLs</h2>
<p>Ok so now I've explained myself - on to the ACL's - I will be happy to answer any questions anyone may have</p>
<h3>HELO/EHLO stage ACL's</h3>
<p>Near the very top of your exim.conf you need to add:</p>
<div class="code">acl_smtp_helo = check_helo</div>
<p>Now for the helo acls</p>
<div class="code">check_helo:<br /> # RBL checks (List formulated by trial and error with shared hosting in mind<br /> # Drop connection if client IP address listed in any of the RBLs.<br /> deny message = Your message was rejected because $sender_fullhost \<br /> is blacklisted at $dnslist_domain see $dnslist_text for an explanation<br /> dnslists = bl.spamcop.net : \<br /> sbl.spamhaus.org : \<br /> xbl.spamhaus.org : \<br /> list.dsbl.org : \<br /> zombie.dnsbl.sorbs.net : \<br /> blackholes.mail-abuse.org : \<br /> smtp.dnsbl.sorbs.net : \<br /> web.dnsbl.sorbs.net : \<br /> escalations.dnsbl.sorbs.net : \<br /> nomail.rhsbl.sorbs.net : \<br /> badconf.rhsbl.sorbs.net : \<br /> http.dnsbl.sorbs.net : \<br /> socks.dnsbl.sorbs.net : \<br /> misc.dnsbl.sorbs.net</div>
<div class="code">#Check sender actually sent a HELO string<br /> deny message = Im afraid I need your name before I can let you in.<br /> log_message = no HELO/EHLO specified <br /> condition = ${if match {$sender_helo_name}{none} {yes}{no}}</div>
<div class="code"># Check sender isnt announcing itself with local IP, replace 00.00.00.00 with your main interface IP<br /> deny message = HELO/EHLO with my ip address. You are not me.<br /> log_message = HELO/EHLO local IP<br /> condition = ${if eq {$sender_helo_name}{00.00.00.00} {yes}{no}}</div>
<div class="code"># Check sender isnt announcing itself with your hostname, replace server.company.com with your servers hostname<br /> deny message = HELO/EHLO with my hostname. You are not me.<br /> log_message = HELO/EHLO Local Hostname<br /> condition = ${if match {$sender_helo_name}{server.company.com} {yes}{no}}</div>
<div class="code"># Check sender hasnt said that they are localhost<br /> deny message = You are NOT localhost.<br /> log_message = HELO/EHLO localhost<br /> condition = ${if match {$sender_helo_name}{localhost} {yes}{no}}</div>
<p>By the time it gets to here, its passed the checks, so let it go on to the next stage.</p>
<div class="code">accept:</div>
<h3>RCPT stage ACL's</h3>
<p>Most exim servers already come with a RCPT stage ACL list of some nature, so in this instance we just need to add a few things to it.</p>
<p>Spammers like to forge some big names when they send you email. We can't easily    check all of them, not until Sender Permitted From (SPF) is widely used. At    least we can check for some of the most commonly abused domains, Yahoo, Hotmail,    MSN, and AOL. These four filters will reject email with forged From: addresses    containing the "big four" domains.</p>
<div class="code">#Fake Yahoo<br /> deny message = Suspected Faked Yahoo Account, E-mail Rejected.<br /> &nbsp;&nbsp;&nbsp;&nbsp; log_message = Fake Yahoo<br /> &nbsp;&nbsp;&nbsp;&nbsp; senders = *@yahoo.com<br /> condition = ${if match{$sender_host_name}{\Nyahoo.com$\N}{no}{yes}}</div>
<div class="code">#Fake Hotmail<br /> deny message = Suspected Faked Hotmail Account, E-mail Rejected.<br /> &nbsp;&nbsp;&nbsp;&nbsp; log_message = Fake hotmail<br /> &nbsp;&nbsp;&nbsp;&nbsp; senders = *@hotmail.com<br /> &nbsp;&nbsp;&nbsp;&nbsp; condition = ${if match {$sender_host_name}{\Nhotmail.com$\N}{no}{yes}}</div>
<div class="code">#Fake MSN<br /> deny message = Suspected Faked MSN Account, E-mail Rejected.<br /> &nbsp;&nbsp;&nbsp;&nbsp; log_message = Fake MSN<br /> &nbsp;&nbsp;&nbsp;&nbsp; senders = *@msn.com<br /> &nbsp;&nbsp;&nbsp;&nbsp; condition = ${if match {$sender_host_name}{\N(hotmail|msn).com$\N}{no}{yes}}</div>
<div class="code"># Fake AOL<br /> deny message = Suspected Faked AOL Account, E-mail Rejected.<br /> &nbsp;&nbsp;&nbsp;&nbsp; log_message = Fake AOL<br /> &nbsp;&nbsp;&nbsp;&nbsp; senders = *@aol.com<br /> &nbsp;&nbsp;&nbsp;&nbsp; condition = ${if match {$sender_host_name}{\Nmx.aol.com$\N}{no}{yes}}</div>
<h3>DATA stage ACL's</h3>
<p>You should be running some form of spam filtering daemon on ANY public mail server - yes they are load heavy but until someone comes up with a way to remove spam at source (not likely) you should be filtering your mail.</p>
<p>I could go in to detail with SpamAssassin ACL checks here but I would imagine most people reading this have cPanel servers, as cPanel already installs and configures SA I'm going to skip it for now.</p>
<p>I have used varying levels of filtering and header checks with ACL's at data stage in the past, but they tend to be the most problematic when you have customers relaying out via your server.</p>
<p>A prime example of this is the common: Check Message ID acl (see rossz's list) - if a message hasn't been relayed through an SMTP server already, then it won't have a message ID header.</p>
<p>All we need to do now is add one final part to the exim config - within the RCPT acl which again commonly already exists on most servers.</p>
<p>Email should have a proper date header (E-mail client software tends to set this, so its normally ok to check it and reject if not found).</p>
<div class="code">deny condition = ${if !def:h_Date: {1}} <br /> message = Message SHOULD have Date: but does not</div>
<p><a href="http://feedads.g.doubleclick.net/~a/kw1jEvr0j1uRk54MVoZplaNOec8/0/da"><img src="http://feedads.g.doubleclick.net/~a/kw1jEvr0j1uRk54MVoZplaNOec8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/kw1jEvr0j1uRk54MVoZplaNOec8/1/da"><img src="http://feedads.g.doubleclick.net/~a/kw1jEvr0j1uRk54MVoZplaNOec8/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NickPack?a=DDZNheeB_RM:wI8jev3ipDc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=DDZNheeB_RM:wI8jev3ipDc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NickPack?i=DDZNheeB_RM:wI8jev3ipDc:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=DDZNheeB_RM:wI8jev3ipDc:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=DDZNheeB_RM:wI8jev3ipDc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NickPack?i=DDZNheeB_RM:wI8jev3ipDc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=DDZNheeB_RM:wI8jev3ipDc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/NickPack?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=DDZNheeB_RM:wI8jev3ipDc:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/NickPack?i=DDZNheeB_RM:wI8jev3ipDc:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=DDZNheeB_RM:wI8jev3ipDc:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/NickPack?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=DDZNheeB_RM:wI8jev3ipDc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NickPack?i=DDZNheeB_RM:wI8jev3ipDc:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=DDZNheeB_RM:wI8jev3ipDc:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/NickPack?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NickPack/~4/DDZNheeB_RM" height="1" width="1"/>]]></content:encoded>
      <pubDate>Fri, 14 Sep 2007 13:10:00 +0000</pubDate>
    <feedburner:origLink>http://www.nickpack.com/article/exim-acl-usage-in-shared-hosting-environments</feedburner:origLink></item>
    <item>
      <title><![CDATA[Using PECL/PEAR/Phpize with /tmp noexec]]></title>
      <link>http://feedproxy.google.com/~r/NickPack/~3/N-AvSqI4XV8/how-to-use-pear-pecl-with-tmp-noexec</link>
      <description><![CDATA[I recently came across and issue trying to install ...]]></description>
      <content:encoded><![CDATA[<p>I recently came across and issue trying to install PHP modules from PECL, where /tmp is mounted noexec phpize refuses to run.</p>
<p>The workaround is to create the temporary directories in another location and symlink them into /tmp</p>
<p>First, create the new directories in a location that isn't noexec (here I have used /root but this can be replaced with anywhere that isnt noexec.</p>
<pre class="brush: plain;">
mkdir /root/tmp.pear
mkdir /root/tmp.pear-build-root
</pre>
<p>Now lets remove any old temporary pear directories.</p>
<div class="code">rm -rf /tmp/pear*</div>
<p>Now lets symlink those dirs into /tmp (Again if need be replace /root with the location of your choice)</p>
<pre class="brush: plain;">
ln -s /root/tmp.pear /tmp/pear
ln -s /root/tmp.pear-build-root /tmp/pear-build-root
</pre>
<p>Thanks to 'twhite' on the cPanel forums for this one.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/WomRyk-km1pUTykro1_wViVgBkY/0/da"><img src="http://feedads.g.doubleclick.net/~a/WomRyk-km1pUTykro1_wViVgBkY/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/WomRyk-km1pUTykro1_wViVgBkY/1/da"><img src="http://feedads.g.doubleclick.net/~a/WomRyk-km1pUTykro1_wViVgBkY/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NickPack?a=N-AvSqI4XV8:GOssn5KKJRo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=N-AvSqI4XV8:GOssn5KKJRo:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NickPack?i=N-AvSqI4XV8:GOssn5KKJRo:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=N-AvSqI4XV8:GOssn5KKJRo:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=N-AvSqI4XV8:GOssn5KKJRo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NickPack?i=N-AvSqI4XV8:GOssn5KKJRo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=N-AvSqI4XV8:GOssn5KKJRo:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/NickPack?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=N-AvSqI4XV8:GOssn5KKJRo:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/NickPack?i=N-AvSqI4XV8:GOssn5KKJRo:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=N-AvSqI4XV8:GOssn5KKJRo:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/NickPack?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=N-AvSqI4XV8:GOssn5KKJRo:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NickPack?i=N-AvSqI4XV8:GOssn5KKJRo:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=N-AvSqI4XV8:GOssn5KKJRo:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/NickPack?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NickPack/~4/N-AvSqI4XV8" height="1" width="1"/>]]></content:encoded>
      <pubDate>Fri, 14 Sep 2007 06:10:00 +0000</pubDate>
    <feedburner:origLink>http://www.nickpack.com/article/how-to-use-pear-pecl-with-tmp-noexec</feedburner:origLink></item>
    <item>
      <title><![CDATA[Useful Technical Publications]]></title>
      <link>http://feedproxy.google.com/~r/NickPack/~3/d3O9aMvyeO4/useful-techie-books</link>
      <description><![CDATA[This is a shameless plug really!
I've set up an a ...]]></description>
      <content:encoded><![CDATA[<p>This is a shameless plug really!</p>
<p>I've set up an amazon store, with some useful books that pertain to these tutorials and some that have helped me in the past getting to grips with things</p>
<p><a href="http://astore.amazon.co.uk/nicpac-21" target="_blank">My Amazon Store - Music &amp; Books</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/Ht3sjw1NmEcPavaZliVhvyKc4X0/0/da"><img src="http://feedads.g.doubleclick.net/~a/Ht3sjw1NmEcPavaZliVhvyKc4X0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Ht3sjw1NmEcPavaZliVhvyKc4X0/1/da"><img src="http://feedads.g.doubleclick.net/~a/Ht3sjw1NmEcPavaZliVhvyKc4X0/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NickPack?a=d3O9aMvyeO4:Bbmbwg7qOKY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=d3O9aMvyeO4:Bbmbwg7qOKY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NickPack?i=d3O9aMvyeO4:Bbmbwg7qOKY:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=d3O9aMvyeO4:Bbmbwg7qOKY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=d3O9aMvyeO4:Bbmbwg7qOKY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NickPack?i=d3O9aMvyeO4:Bbmbwg7qOKY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=d3O9aMvyeO4:Bbmbwg7qOKY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/NickPack?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=d3O9aMvyeO4:Bbmbwg7qOKY:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/NickPack?i=d3O9aMvyeO4:Bbmbwg7qOKY:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=d3O9aMvyeO4:Bbmbwg7qOKY:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/NickPack?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=d3O9aMvyeO4:Bbmbwg7qOKY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NickPack?i=d3O9aMvyeO4:Bbmbwg7qOKY:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=d3O9aMvyeO4:Bbmbwg7qOKY:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/NickPack?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NickPack/~4/d3O9aMvyeO4" height="1" width="1"/>]]></content:encoded>
      <pubDate>Mon, 13 Aug 2007 07:12:00 +0000</pubDate>
    <feedburner:origLink>http://www.nickpack.com/article/useful-techie-books</feedburner:origLink></item>
    <item>
      <title><![CDATA[Preventing Recursive Lookups for untrusted hosts BIND]]></title>
      <link>http://feedproxy.google.com/~r/NickPack/~3/6e9pkxFrnIo/closing-open-dns-server-bind</link>
      <description><![CDATA[This tutorial explains how to close an open DNS se ...]]></description>
      <content:encoded><![CDATA[<p>This tutorial explains how to close an open DNS server and obscure which version you are running.</p>
<p>Open /etc/named.conf<br /> Undernieth this:</p>
<div class="code">include "/etc/rndc.key"; <br /> <br /> controls {<br /> &nbsp;&nbsp;&nbsp;inet 127.0.0.1 allow { localhost; } keys { "rndckey"; }; };</div>
<p>Add the following, substituting 111.222.333.444 for your servers primary IP address (if your server listens on any other addresses add those 1 per line in the acl as per the others in the list)<br /> If you are running a DNS cluster be sure to add the IP addresses of your other DNS server into the list as well.</p>
<div class="code">acl "trusted" {<br /> &nbsp;&nbsp;&nbsp;111.222.333.444;<br /> &nbsp;&nbsp;&nbsp;127.0.0.1;<br /> };</div>
<p>Next Find the options container and change it so that it looks like this:</p>
<div class="code">options {<br /> &nbsp;&nbsp;&nbsp;directory "/var/named";<br /> &nbsp;&nbsp;&nbsp;version "I dont think so";<br /> &nbsp;&nbsp;&nbsp;allow-recursion { trusted; };<br /> &nbsp;&nbsp;&nbsp;allow-notify { trusted; };<br /> &nbsp;&nbsp;&nbsp;allow-transfer { trusted; };<br /> };</div>
<p>Restart named and you should have a closed DNS server, You can add as many ACL's as you like for the different options such as recursion, notify &amp; transfer to give you a bit more control , this tutorial is intended only to get you started.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/E9JIj0_kXSnREQSLvweWB3-01Ac/0/da"><img src="http://feedads.g.doubleclick.net/~a/E9JIj0_kXSnREQSLvweWB3-01Ac/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/E9JIj0_kXSnREQSLvweWB3-01Ac/1/da"><img src="http://feedads.g.doubleclick.net/~a/E9JIj0_kXSnREQSLvweWB3-01Ac/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NickPack?a=6e9pkxFrnIo:OsOoLCUm1JA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=6e9pkxFrnIo:OsOoLCUm1JA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NickPack?i=6e9pkxFrnIo:OsOoLCUm1JA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=6e9pkxFrnIo:OsOoLCUm1JA:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=6e9pkxFrnIo:OsOoLCUm1JA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NickPack?i=6e9pkxFrnIo:OsOoLCUm1JA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=6e9pkxFrnIo:OsOoLCUm1JA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/NickPack?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=6e9pkxFrnIo:OsOoLCUm1JA:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/NickPack?i=6e9pkxFrnIo:OsOoLCUm1JA:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=6e9pkxFrnIo:OsOoLCUm1JA:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/NickPack?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=6e9pkxFrnIo:OsOoLCUm1JA:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NickPack?i=6e9pkxFrnIo:OsOoLCUm1JA:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=6e9pkxFrnIo:OsOoLCUm1JA:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/NickPack?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NickPack/~4/6e9pkxFrnIo" height="1" width="1"/>]]></content:encoded>
      <pubDate>Mon, 13 Aug 2007 07:10:00 +0000</pubDate>
    <feedburner:origLink>http://www.nickpack.com/article/closing-open-dns-server-bind</feedburner:origLink></item>
    <item>
      <title><![CDATA[YaBB Malformed Headers with Apache ServerTokens]]></title>
      <link>http://feedproxy.google.com/~r/NickPack/~3/z_HK3UFaqLo/yabb-malformed-headers-apache-servertokens</link>
      <description><![CDATA[I recently discovered a bug in YaBB whilst locking ...]]></description>
      <content:encoded><![CDATA[<p>I recently discovered a bug in YaBB whilst locking down a customers server.</p>
<p>YaBB has fairly crude regex matches for /^IIS/ coded into it, they are there so that the scripts don't output malformed headers on Windows systems.</p>
<p>Generally as a rule (Wherever possible) I tend to hide version numbers of all core daemons running on any public facing machine - or spoof them.</p>
<p>In this example I had configured apache on a customers server to return Microsoft-IIS/5.0 as its ServerTokens string (Ok not a major means of security - but every little helps) I then ended up with phone calls complaining of YaBB installs throwing 500 errors.</p>
<p>Because of YaBB's crude regex's it was throwing malformed (retarded) windows HTTP headers. So I decided to report it as a bug with YaBB's developers - baring in mind, I don't use YaBB and am not exactly a perl developer (although if I can work it out, how hard can it be!).</p>
<p>I can't say I was overly impressed with the response, I was told to comment out the IIS specific code rather than them fix it. (Great, thanks guys!).</p>
<p>I then politely posted back that it might be a wise idea to check the platform as well as the HTTP daemon (as quite obviously IIS doesn't run (well not stable anyway - good ole' wine) on anything other than windows.</p>
<p>I haven't yet had a response on that, and I know it isn't exactly a critical bug, so I posted it here just as a headsup for anyone that encounters the same issue.</p>
<p>The thread is <a href="http://www.yabbforum.com/community/YaBB.pl?num=1186661633">here on YaBB's community forum</a> if anyone is interested.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/Kg3csIAcns-9MOgAUZQiHqWyX94/0/da"><img src="http://feedads.g.doubleclick.net/~a/Kg3csIAcns-9MOgAUZQiHqWyX94/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Kg3csIAcns-9MOgAUZQiHqWyX94/1/da"><img src="http://feedads.g.doubleclick.net/~a/Kg3csIAcns-9MOgAUZQiHqWyX94/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NickPack?a=z_HK3UFaqLo:p70D7y3bny8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=z_HK3UFaqLo:p70D7y3bny8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NickPack?i=z_HK3UFaqLo:p70D7y3bny8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=z_HK3UFaqLo:p70D7y3bny8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=z_HK3UFaqLo:p70D7y3bny8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NickPack?i=z_HK3UFaqLo:p70D7y3bny8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=z_HK3UFaqLo:p70D7y3bny8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/NickPack?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=z_HK3UFaqLo:p70D7y3bny8:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/NickPack?i=z_HK3UFaqLo:p70D7y3bny8:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=z_HK3UFaqLo:p70D7y3bny8:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/NickPack?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=z_HK3UFaqLo:p70D7y3bny8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NickPack?i=z_HK3UFaqLo:p70D7y3bny8:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=z_HK3UFaqLo:p70D7y3bny8:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/NickPack?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NickPack/~4/z_HK3UFaqLo" height="1" width="1"/>]]></content:encoded>
      <pubDate>Mon, 13 Aug 2007 07:05:00 +0000</pubDate>
    <feedburner:origLink>http://www.nickpack.com/article/yabb-malformed-headers-apache-servertokens</feedburner:origLink></item>
    <item>
      <title><![CDATA[Hosting Control Panel - Quick Comparison]]></title>
      <link>http://feedproxy.google.com/~r/NickPack/~3/jbxCbRN1iPs/quick-hosting-control-panel-comparison</link>
      <description><![CDATA[When I first started out with shared hosting, I fo ...]]></description>
      <content:encoded><![CDATA[<p>When I first started out with shared hosting, I found it difficult to find any comparitive information on the industry standard control panels.</p>
<p>I will add to this when I get a chance but below is a VERY short list of my experiences with some of the most used control panels.</p>
<h2>Plesk - Commercial</h2>
<p>Home Page: <a href="http://www.swsoft.com">http://www.swsoft.com</a></p>
<p>I found plesk to be stupidly simple to install, configure and use, however I soon found it to be extremely restrictive when you want to get a bit further under the bonnet and tweak the setup to your specific needs, and what the fuck is up with the partition schema and vhost arrangement?</p>
<p>The main annoyance for me, was the fact that more or less every feature I wanted to add to the build was a commercial extra (with an attached price tag) simple things such as spam assassin &amp; an iptables configuration front-end (which is a requirement for more or less everyone nowadays), I don't really see how they can justify making you pay for open source software when everything else on the market offers you the same for free.</p>
<p>I guess my main hindrance with plesk was the fear of it breaking every 10 minutes if I manually added acls and configuration directives outside of the scope of the control panel, this for me is a major thing as the companies I do work for tend to have very specific requirements.</p>
<p>I also found the company, client &amp; domain management way of thinking a little annoying and surplus to requirements.</p>
<p>Overall not particularly impressed, anyone with minimal linux knowledge would be frustrated when custom implementation is needed.</p>
<h2>Webmin - Open Source</h2>
<p>Home Page: <a href="http://www.webmin.com">http://www.webmin.com</a></p>
<p>Although overall im not really a fan of webmin, I have been known to use it in the past and I can't find an awful lot to complain about with it, it has no rivals for the amount of software modules you can plug into it and the amount of control it gives you over everything, my only bugbear with webmin is the user interface, and the way you navigate around the different areas, to a newbie it is a little confusing to use at first, but that said its very functional, very stable and also free (open source)!</p>
<h2>ISPConfig - Open Source</h2>
<p>Home Page: <a href="http://www.ispconfig.org/">http://www.ispconfig.org/</a></p>
<p>I haven't used ISPConfig a great deal, I have a few gripes with the installer having tried to install it on low-spec VPS systems on my development testbed - Constantly running out of memory!</p>
<p>When I finally did get it working, it was far too much like plesk in terms of client &amp; domain management and that was too much of a turn off for me - also my unfamiliarity with postfix didnt help much, It may well be brilliant and I apologise if I haven't given it enough of a chance but I don't think I'll be recommending it to anyone.</p>
<h2>cPanel - Commercial</h2>
<p>Home Page: <a href="http://www.cpanel.net">http://www.cpanel.net</a></p>
<p>My control panel of choice, I haven't used anything that rivals it by a long shot yet, there is also a strong community of good, helpful people both in its staff and end-customers</p>
<p>I've found cPanel to be one of the least restrictive of the control panels I've used, it leaves you plenty of scope to customise your boxes as you need them, without it breaking every 10 minutes.</p>
<p>It does have some faults, but what automated system doesn't? Some of the updates have been a little dubious, and the changelogs are a bit lapse of late, but most of the issues it creates are either easily fixed or are promptly corrected by their staff.</p>
<p>I would recommend cPanel for those with a basic understanding of linux as its far less restrictive than plesk but has the tools and community support to help you out if you get stuck with it.</p>
<p><a href="http://www.configserver.com">Configserver</a> also have some great products for it that plug straight in, most free, some not.</p>
<h2>Conclusion</h2>
<p>So there is my very brief overview of experiences with control panel software, all of which were tested on CentOS boxes, when I get a bit more time, I will add more to this and try and make it a little more structured. That said, hope this helps somebody.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/_7184WPuUUoJ-3bpFrz_4TIC3eg/0/da"><img src="http://feedads.g.doubleclick.net/~a/_7184WPuUUoJ-3bpFrz_4TIC3eg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/_7184WPuUUoJ-3bpFrz_4TIC3eg/1/da"><img src="http://feedads.g.doubleclick.net/~a/_7184WPuUUoJ-3bpFrz_4TIC3eg/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NickPack?a=jbxCbRN1iPs:X0JTAWqbysw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=jbxCbRN1iPs:X0JTAWqbysw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NickPack?i=jbxCbRN1iPs:X0JTAWqbysw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=jbxCbRN1iPs:X0JTAWqbysw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=jbxCbRN1iPs:X0JTAWqbysw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NickPack?i=jbxCbRN1iPs:X0JTAWqbysw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=jbxCbRN1iPs:X0JTAWqbysw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/NickPack?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=jbxCbRN1iPs:X0JTAWqbysw:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/NickPack?i=jbxCbRN1iPs:X0JTAWqbysw:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=jbxCbRN1iPs:X0JTAWqbysw:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/NickPack?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=jbxCbRN1iPs:X0JTAWqbysw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NickPack?i=jbxCbRN1iPs:X0JTAWqbysw:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=jbxCbRN1iPs:X0JTAWqbysw:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/NickPack?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NickPack/~4/jbxCbRN1iPs" height="1" width="1"/>]]></content:encoded>
      <pubDate>Mon, 25 Jun 2007 09:19:00 +0000</pubDate>
    <feedburner:origLink>http://www.nickpack.com/article/quick-hosting-control-panel-comparison</feedburner:origLink></item>
    <item>
      <title><![CDATA[Operating System Recommendation]]></title>
      <link>http://feedproxy.google.com/~r/NickPack/~3/Xd9BCSNyw2s/operating-system-recommendation</link>
      <description><![CDATA[Customers often ask me which linux OS they should  ...]]></description>
      <content:encoded><![CDATA[<p>Customers often ask me which linux OS they should use...</p>
<p>When money is no object, <a href="http://www.redhat.com">RHEL</a> is my obvious choice, but when cost is a factor thats when CentOS comes in</p>
<h2>What is CentOS</h2>
<p><strong>The Official Description is as follows:</strong></p>
<p><em>CentOS is an Enterprise-class Linux Distribution derived from sources freely provided to the public by a prominent North American Enterprise Linux vendor.  CentOS conforms fully with the upstream vendors redistribution policy and aims to be 100% binary compatible. (CentOS mainly changes packages to remove upstream vendor branding and artwork.)  CentOS is free.</em></p>
<p>Basically what CentOS is, is Red Hat Enterprise Linux, compiled from source with all the Red Hat Branding Removed.</p>
<p>I cannot fault its stability, its never done me any harm therefore would strongly recommend it to anyone.</p>
<p>It has proved to be particularly good in a <a href="http://www.cpanel.net">cPanel </a>shared hosting environment.</p>
<p>Well what are you waiting for? <a href="http://www.centos.org">Download it here</a>!</p>
<p><a href="http://feedads.g.doubleclick.net/~a/FjOJoZNtrrpaAO5Eghc9w_fZVns/0/da"><img src="http://feedads.g.doubleclick.net/~a/FjOJoZNtrrpaAO5Eghc9w_fZVns/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/FjOJoZNtrrpaAO5Eghc9w_fZVns/1/da"><img src="http://feedads.g.doubleclick.net/~a/FjOJoZNtrrpaAO5Eghc9w_fZVns/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NickPack?a=Xd9BCSNyw2s:Gl33bb6T6r4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=Xd9BCSNyw2s:Gl33bb6T6r4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NickPack?i=Xd9BCSNyw2s:Gl33bb6T6r4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=Xd9BCSNyw2s:Gl33bb6T6r4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=Xd9BCSNyw2s:Gl33bb6T6r4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NickPack?i=Xd9BCSNyw2s:Gl33bb6T6r4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=Xd9BCSNyw2s:Gl33bb6T6r4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/NickPack?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=Xd9BCSNyw2s:Gl33bb6T6r4:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/NickPack?i=Xd9BCSNyw2s:Gl33bb6T6r4:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=Xd9BCSNyw2s:Gl33bb6T6r4:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/NickPack?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=Xd9BCSNyw2s:Gl33bb6T6r4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NickPack?i=Xd9BCSNyw2s:Gl33bb6T6r4:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=Xd9BCSNyw2s:Gl33bb6T6r4:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/NickPack?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NickPack/~4/Xd9BCSNyw2s" height="1" width="1"/>]]></content:encoded>
      <pubDate>Mon, 25 Jun 2007 07:19:00 +0000</pubDate>
    <feedburner:origLink>http://www.nickpack.com/article/operating-system-recommendation</feedburner:origLink></item>
    <item>
      <title><![CDATA[Hiding daemon version numbers]]></title>
      <link>http://feedproxy.google.com/~r/NickPack/~3/rqiAfhjVFvo/hiding-version-numbers</link>
      <description><![CDATA[An easy way to make yourself a little less vulnera ...]]></description>
      <content:encoded><![CDATA[<p>An easy way to make yourself a little less vulnerable to common attack vendors, is to hide the version numbers of the common daemons running on your boxes, and its relativly simple to do.</p>
<h2>Hiding the BIND Version</h2>
<p>If you follow my&nbsp;<a href="site/44/182.html">Closing Open DNS Servers- BIND</a> tutorial, it shows you how to set the version number to something very different.</p>
<h2>PHP</h2>
<p>Open up your php.ini (If you have Zend Optimizer on linux - normally /usr/local/Zend/etc/php.ini)</p>
<div class="code"># vi /usr/local/Zend/etc/php.ini</div>
<p>Press / and type expose_php</p>
<p>It should then throw you to the exposure line, edit the line so that it reads:</p>
<div class="code">expose_php = Off</div>
<p>Then save and close the file, finally restart Apache</p>
<div class="code"># service httpd restart</div>
<p>Now your server will no longer return the 'Powered By PHP v' header, please note though that it will be obvious when php pages are in use, this will hide the version from the http headers but doesnt ensure that the version number isnt exposed elsewhere (such as phpinfo pages etc)</p>
<h2>Apache 1.3</h2>
<p>Open up your httpd.conf (on a cPanel Server - /usr/local/apache/conf/httpd.conf)</p>
<p>Find the line that reads: ServerSignature on</p>
<p>Delete that line and replace it with the following 2 lines:</p>
<div class="code">ServerSignature Off <br /> ServerTokens Prod</div>
<p>Save the file and then restart apache</p>
<div class="code"># service httpd restart</div>
<p>Thats it, whenever a http header/an error page returns, all your server will say is 'Apache' rather than its full version number.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/ctt9ntv5iWbQvoEL0kMAycgjUO8/0/da"><img src="http://feedads.g.doubleclick.net/~a/ctt9ntv5iWbQvoEL0kMAycgjUO8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/ctt9ntv5iWbQvoEL0kMAycgjUO8/1/da"><img src="http://feedads.g.doubleclick.net/~a/ctt9ntv5iWbQvoEL0kMAycgjUO8/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NickPack?a=rqiAfhjVFvo:tWuHJOrXmwg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=rqiAfhjVFvo:tWuHJOrXmwg:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NickPack?i=rqiAfhjVFvo:tWuHJOrXmwg:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=rqiAfhjVFvo:tWuHJOrXmwg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=rqiAfhjVFvo:tWuHJOrXmwg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NickPack?i=rqiAfhjVFvo:tWuHJOrXmwg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=rqiAfhjVFvo:tWuHJOrXmwg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/NickPack?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=rqiAfhjVFvo:tWuHJOrXmwg:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/NickPack?i=rqiAfhjVFvo:tWuHJOrXmwg:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=rqiAfhjVFvo:tWuHJOrXmwg:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/NickPack?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=rqiAfhjVFvo:tWuHJOrXmwg:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NickPack?i=rqiAfhjVFvo:tWuHJOrXmwg:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=rqiAfhjVFvo:tWuHJOrXmwg:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/NickPack?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NickPack/~4/rqiAfhjVFvo" height="1" width="1"/>]]></content:encoded>
      <pubDate>Mon, 25 Jun 2007 07:12:00 +0000</pubDate>
    <feedburner:origLink>http://www.nickpack.com/article/hiding-version-numbers</feedburner:origLink></item>
    <item>
      <title><![CDATA[Setting up a RAM Disk for MailScanner]]></title>
      <link>http://feedproxy.google.com/~r/NickPack/~3/GazWkd8aVJY/mailscanner-ramdisk-howto</link>
      <description><![CDATA[Having recently added an influx of hosting custome ...]]></description>
      <content:encoded><![CDATA[<p>Having recently added an influx of hosting customers and some additional SA rules, I noticed a considerable increase in the amount of load that MailScanner was creating, with a limited spend this year (Too many shiny new servers) I decided to investigate improving MailScanners efficiency.</p>
<p>After some research, I decided to add RBL's and drop connections at SMTP time - that killed off a lot of unwanted mail traffic</p>
<p>The second thing to do was to set up MailScanners work directory as a ramdisk - You wouldn't believe the load decrease!</p>
<p>Heres How You Do It:</p>
<div class="code">vi /etc/fstab</div>
<p>Then add this line to it:</p>
<div class="code">none /var/mstmp tmpfs size=64m 0 0</div>
<p>You may want to tweak the size of the ramdisk, mailscanner state that it shouldnt use more than 64MB at any given time but I know people running more than that (Some up to 100MB) this will have to be trial and error.</p>
<p>Now Mount the RAMDisk</p>
<div class="code">mount /var/mstmp</div>
<p>Check now that it actually mounted</p>
<div class="code">df -h</div>
<p>Now tell MailScanner to use the new ramdisk as its working directory. If you use the WHM front-end from configserver, click on the MailScanner Configuration button.</p>
<p>If you installed it via the configserver install script (Which nearly all cPanel servers are) it is located at: /usr/mailscanner/etc/MailScanner.conf</p>
<p>In your MailScanner configuration file, find the line that begins:</p>
<div class="code">Incoming Work Dir =</div>
<p>Set that to the path of the ramdisk you just created, for example:</p>
<div class="code">Incoming Work Dir = /var/mstmp</div>
<p>Then save the config file, and restart mailscanner, Job done!</p>
<p><a href="http://feedads.g.doubleclick.net/~a/Bw9Ga2KfNmjzToQAZ1gY5eJZj04/0/da"><img src="http://feedads.g.doubleclick.net/~a/Bw9Ga2KfNmjzToQAZ1gY5eJZj04/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Bw9Ga2KfNmjzToQAZ1gY5eJZj04/1/da"><img src="http://feedads.g.doubleclick.net/~a/Bw9Ga2KfNmjzToQAZ1gY5eJZj04/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NickPack?a=GazWkd8aVJY:hqVFp0HxUgc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=GazWkd8aVJY:hqVFp0HxUgc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NickPack?i=GazWkd8aVJY:hqVFp0HxUgc:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=GazWkd8aVJY:hqVFp0HxUgc:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=GazWkd8aVJY:hqVFp0HxUgc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NickPack?i=GazWkd8aVJY:hqVFp0HxUgc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=GazWkd8aVJY:hqVFp0HxUgc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/NickPack?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=GazWkd8aVJY:hqVFp0HxUgc:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/NickPack?i=GazWkd8aVJY:hqVFp0HxUgc:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=GazWkd8aVJY:hqVFp0HxUgc:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/NickPack?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=GazWkd8aVJY:hqVFp0HxUgc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NickPack?i=GazWkd8aVJY:hqVFp0HxUgc:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=GazWkd8aVJY:hqVFp0HxUgc:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/NickPack?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NickPack/~4/GazWkd8aVJY" height="1" width="1"/>]]></content:encoded>
      <pubDate>Sun, 24 Jun 2007 07:12:00 +0000</pubDate>
    <feedburner:origLink>http://www.nickpack.com/article/mailscanner-ramdisk-howto</feedburner:origLink></item>
    <item>
      <title><![CDATA[cPanel RBL Additions]]></title>
      <link>http://feedproxy.google.com/~r/NickPack/~3/C_B6uHirj7Q/adding-rbls-to-cpanel</link>
      <description><![CDATA[Adding RBL's to exim on a cpanel server couldn't b ...]]></description>
      <content:encoded><![CDATA[<p>Adding RBL's to exim on a cpanel server couldn't be easier, there are plenty of HOWTO's around for doing it but one thing I found when I was a new user trying to get my head around it was that the howtos tend to direct you to check the RBL's at the RCPT stage of an e-mail transaction, this ISN't the correct means of doing it and generates excess log noise with 'unexpected disconnection' messages. To factor these out you simply add an ACL check to the HELO/EHLO stage.(cPanel's exim config by default does not have this set up.)</p>
<p>Heres how you do it....</p>
<p>Go to the 'Exim Configuration Editor' in Web Host Manager and click the 'Advanced Editor' Button.</p>
<p>In the first box under '#!!# cPanel Exim 4 Config' add:</p>
<div class="code">acl_smtp_helo = check_helo</div>
<p>Then scroll down to the ACL section of the editor, which has <br /> '#!!# These ACLs are crudely constructed from Exim 3 options.<br /> #!!# They are almost certainly not optimal. You should study<br /> #!!# them and rewrite as necessary.<br /> <br /> begin acl' above it</p>
<p>In the first of the three boxes add:</p>
<div class="code">check_helo:<br /> # Check sending hosts against DNS black lists.<br /> # Reject message if address listed in blacklist.<br /> deny message = Message rejected because $sender_fullhost \<br /> is blacklisted at $dnslist_domain see $dnslist_text<br /> dnslists = bl.spamcop.net : \<br /> sbl.spamhaus.org : \<br /> xbl.spamhaus.org : \<br /> list.dsbl.org : \<br /> zombie.dnsbl.sorbs.net : \<br /> blackholes.mail-abuse.org : \<br /> smtp.dnsbl.sorbs.net : \<br /> web.dnsbl.sorbs.net : \<br /> escalations.dnsbl.sorbs.net : \<br /> nomail.rhsbl.sorbs.net : \<br /> badconf.rhsbl.sorbs.net : \<br /> http.dnsbl.sorbs.net : \<br /> socks.dnsbl.sorbs.net : \<br /> misc.dnsbl.sorbs.net<br /> accept:</div>
<p>That is the list of RBL's that are the least agrovation in shared hosting environments, It is also a good idea to add some additional ACL's from&nbsp;<a href="site/44/180.html">Exim ACL Spam Filters</a> (rossz's list)</p>
<p>Save the exim configuration and your all done!</p>
<p><a href="http://feedads.g.doubleclick.net/~a/UZVjiBfh5wcx77JpBQ9_FvTZL3o/0/da"><img src="http://feedads.g.doubleclick.net/~a/UZVjiBfh5wcx77JpBQ9_FvTZL3o/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/UZVjiBfh5wcx77JpBQ9_FvTZL3o/1/da"><img src="http://feedads.g.doubleclick.net/~a/UZVjiBfh5wcx77JpBQ9_FvTZL3o/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NickPack?a=C_B6uHirj7Q:DYfbkhY0S3o:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=C_B6uHirj7Q:DYfbkhY0S3o:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NickPack?i=C_B6uHirj7Q:DYfbkhY0S3o:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=C_B6uHirj7Q:DYfbkhY0S3o:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=C_B6uHirj7Q:DYfbkhY0S3o:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NickPack?i=C_B6uHirj7Q:DYfbkhY0S3o:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=C_B6uHirj7Q:DYfbkhY0S3o:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/NickPack?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=C_B6uHirj7Q:DYfbkhY0S3o:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/NickPack?i=C_B6uHirj7Q:DYfbkhY0S3o:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=C_B6uHirj7Q:DYfbkhY0S3o:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/NickPack?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=C_B6uHirj7Q:DYfbkhY0S3o:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NickPack?i=C_B6uHirj7Q:DYfbkhY0S3o:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=C_B6uHirj7Q:DYfbkhY0S3o:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/NickPack?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NickPack/~4/C_B6uHirj7Q" height="1" width="1"/>]]></content:encoded>
      <pubDate>Tue, 05 Jun 2007 07:10:00 +0000</pubDate>
    <feedburner:origLink>http://www.nickpack.com/article/adding-rbls-to-cpanel</feedburner:origLink></item>
    <item>
      <title><![CDATA[Intel 865 Chipset Under Debian]]></title>
      <link>http://feedproxy.google.com/~r/NickPack/~3/LLsBwCGnCe4/intel-865-chipset-debian</link>
      <description><![CDATA[At work we all have Dell systems, my 2 happen to b ...]]></description>
      <content:encoded><![CDATA[<p>At work we all have Dell systems, my 2 happen to be Optiplex GX270's. <br /><br />I thought great, mainstream manufacturer so the default drivers set should cover it, how wrong I was, they happen to have the A03 BIOS and the Intel 865 chipset with the shared memory Extreme graphics card which is known as a royal pain in the arse under any unix system, the linux kernel struggles to retrieve the proper graphics memory size therefore limiting you to 640x480 resolution under any of the X GUI's (Gnome, KDE e.t.c.). <br /><br />After much forum surfing and googling I managed to come across the perfect fix <a href="http://www.carbonstudios.co.uk/865patch.deb">865patch.deb</a> <br />I am yet to be able to find the original author(s), according to various forums it originated from joepenguin.com which is now some dodgey search engine type holding page. <br /><br />It took me a long time to find it and the site seems to have disapeered into thin air so I thought I would post it up for anyone struggling to get their Optiplex into a half reasonable resolution. <br /><br />If anyone knows of the original author please let me know as I would like to thank them &amp; credit them for this.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/gsS23PpI-5VkgOcxOj71KR4z7KQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/gsS23PpI-5VkgOcxOj71KR4z7KQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/gsS23PpI-5VkgOcxOj71KR4z7KQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/gsS23PpI-5VkgOcxOj71KR4z7KQ/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NickPack?a=LLsBwCGnCe4:BmBr9RVzVcU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=LLsBwCGnCe4:BmBr9RVzVcU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NickPack?i=LLsBwCGnCe4:BmBr9RVzVcU:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=LLsBwCGnCe4:BmBr9RVzVcU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=LLsBwCGnCe4:BmBr9RVzVcU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NickPack?i=LLsBwCGnCe4:BmBr9RVzVcU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=LLsBwCGnCe4:BmBr9RVzVcU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/NickPack?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=LLsBwCGnCe4:BmBr9RVzVcU:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/NickPack?i=LLsBwCGnCe4:BmBr9RVzVcU:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=LLsBwCGnCe4:BmBr9RVzVcU:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/NickPack?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=LLsBwCGnCe4:BmBr9RVzVcU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NickPack?i=LLsBwCGnCe4:BmBr9RVzVcU:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=LLsBwCGnCe4:BmBr9RVzVcU:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/NickPack?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NickPack/~4/LLsBwCGnCe4" height="1" width="1"/>]]></content:encoded>
      <pubDate>Mon, 21 May 2007 09:36:11 +0000</pubDate>
    <feedburner:origLink>http://www.nickpack.com/article/intel-865-chipset-debian</feedburner:origLink></item>
    <item>
      <title><![CDATA[Exim Global Email Aliases - Postmaster and Abuse]]></title>
      <link>http://feedproxy.google.com/~r/NickPack/~3/wst3OEgizzc/exim-global-aliases-for-postmaster-and-abuse</link>
      <description><![CDATA[For RFC compliant mailservers (RFC822 6.3, RFC1123 ...]]></description>
      <content:encoded><![CDATA[<p>For RFC compliant mailservers (<a href="http://www.dnsstuff.com/pages/rfc822.htm">RFC822</a> 6.3, <a href="http://www.dnsreport.com/tools/rfc.ch?detail=1123">RFC1123</a> 5.2.7, and <a href="http://www.dnsreport.com/tools/rfc.ch?detail=2821">RFC2821</a> 4.5.1)&nbsp; you are required to accept mail for postmaster for every domain you host (also accepting abuse@ all domains is considered good practice) the simple way to do this with exim is as follows:</p>
<p>Create a file called globalaliases in /etc with the aliases one per line in the format: - The first part is the alias at any domain, the second is the recipient address, note that the first two are local users (convention is to forward roots mail in /etc/aliases)</p>
<div class="code">postmaster: root  <br /> abuse: root <br /> somethingelse: you@yourdomain.com</div>
<p>In the directors part of your exim.conf file</p>
<div class="code">mysystem_aliases:  <br /> driver = redirect  <br /> allow_defer  <br /> allow_fail <br /> data = ${lookup{$local_part}lsearch{/etc/globalaliases}}<br /> file_transport = address_file  <br /> pipe_transport = address_pipe<br /> retry_use_local_part</div>
<p>You'll then have addresses that won't be interefered with by users having :fail: or :blackhole: Default Addresses.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/AlmnXxH1rt9GjBgC7uEqTk6TM0s/0/da"><img src="http://feedads.g.doubleclick.net/~a/AlmnXxH1rt9GjBgC7uEqTk6TM0s/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/AlmnXxH1rt9GjBgC7uEqTk6TM0s/1/da"><img src="http://feedads.g.doubleclick.net/~a/AlmnXxH1rt9GjBgC7uEqTk6TM0s/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NickPack?a=wst3OEgizzc:Pm_GkJwl9D0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=wst3OEgizzc:Pm_GkJwl9D0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NickPack?i=wst3OEgizzc:Pm_GkJwl9D0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=wst3OEgizzc:Pm_GkJwl9D0:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=wst3OEgizzc:Pm_GkJwl9D0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NickPack?i=wst3OEgizzc:Pm_GkJwl9D0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=wst3OEgizzc:Pm_GkJwl9D0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/NickPack?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=wst3OEgizzc:Pm_GkJwl9D0:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/NickPack?i=wst3OEgizzc:Pm_GkJwl9D0:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=wst3OEgizzc:Pm_GkJwl9D0:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/NickPack?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=wst3OEgizzc:Pm_GkJwl9D0:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NickPack?i=wst3OEgizzc:Pm_GkJwl9D0:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=wst3OEgizzc:Pm_GkJwl9D0:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/NickPack?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NickPack/~4/wst3OEgizzc" height="1" width="1"/>]]></content:encoded>
      <pubDate>Wed, 25 Apr 2007 07:10:00 +0000</pubDate>
    <feedburner:origLink>http://www.nickpack.com/article/exim-global-aliases-for-postmaster-and-abuse</feedburner:origLink></item>
    <item>
      <title><![CDATA[Basic SSH Security]]></title>
      <link>http://feedproxy.google.com/~r/NickPack/~3/TAja6VYJpQw/basic-ssh-security</link>
      <description><![CDATA[Just a HOWTO to give you a basic insight into dete ...]]></description>
      <content:encoded><![CDATA[<p>Just a HOWTO to give you a basic insight into deterring SSH brute-force attempts. <br /><br />Nothing is better than a firewall, I am simply just explaining a couple of things you can do to make SSH a tiny bit more secure, I will explain in a later post about detecting and then blocking SSH bruteforce attempts with BFD and APF but for now, just the basics. <br /><br />This tutorial assumes <strong>basic linux knowledge</strong>. <br /><br />Log into your box as root, at the shell type:</p>
<div class="code">vi /etc/ssh/sshd_config</div>
<p>(assuming you have vi installed, if not use pico or your preferred editor) <br />/etc/ssh/sshd_config is the common place for the ssh config file although this could vary dependant on your distro, if in doubt use locate to find the sshd_config file on your system. <br /><br />Assuming you are using vi press: / <br /><br />this puts vi into search mode, then type: #Port 22 <br /><br />which should take you to a block of config file that looks like:</p>
<div class="code">#Port 22 <br />#Protocol 2, 1 <br />#ListenAddress 0.0.0.0 <br />#ListenAddress ::</div>
<p><strong>Change The Listening Port</strong> <br />Start by uncommenting the #Port 22 line (by removing the hash in front of it you are uncommenting it) in vi you do this by pressing the I key to switch to INSERT mode (vi will display INSERT in the bottom left corner if you got it right) then use the delete key to remove the hash. <br /><br />Next thing to do is to change the port number to something unusual (I would suggest 4 or 5 numbers in length) <br /><br />Tread carefully with this as you dont want to use a port that another service runs on, a ports list is available HERE. <br /><br /><strong>Deny SSH1 Connections</strong> <br />You should still be in INSERT mode in vi so scroll to the next line, uncomment it as per above and remove the , 1 part from the end, this prevents older ssh1 clients connecting. <br /><br /><strong>Change the Binding Address <br /></strong>Next jump down to the ListenAddress line, uncomment it and change the 0.0.0.0 to one of the IP addresses you have been assigned by your service provider (I would try and keep this different from the address your dns for any domains you host resolves to if possible). <br /><br /><strong>Deny Root Log in</strong> <br />Please ensure you have another user account on the server with shell access and that is part of the wheel group otherwise you will be <strong>locked out</strong>!</p>
<p><strong>DO NOT CONTINUE UNLESS YOU HAVE A WHEEL GROUP USER</strong><br /><br />Its normally advisable to deny root logins from the shell, to do this press ESC on your keyboard to switch off INSERT mode in vi, then type: /#PermitRootLogin <br /><br />the line it finds should look like: #PermitRootLogin yes <br /><br />Press I to put vi back into insert mode, edit the line so that it looks like: PermitRootLogin no <br /><br />With that option disabled you will have to log into your server as an unprivelidged user and use the su - command to change to root when you need elevated privelidges. <br /><br /><strong>Restart SSH <br /></strong>Now all you need to do is restart sshd, I would suggest leaving your current SSH session open in case you messed up and cant log in again. To restart SSH on most distros type: /etc/init.d/ssh restart <br /><br />Then try and log in to ssh via the IP address you set the bindaddress option to earlier, if it works you will have to log in as someone other than root.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/ACs-VuwJ6f0w4T5fQKsr7fbV3as/0/da"><img src="http://feedads.g.doubleclick.net/~a/ACs-VuwJ6f0w4T5fQKsr7fbV3as/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/ACs-VuwJ6f0w4T5fQKsr7fbV3as/1/da"><img src="http://feedads.g.doubleclick.net/~a/ACs-VuwJ6f0w4T5fQKsr7fbV3as/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NickPack?a=TAja6VYJpQw:7fy3_TzeLk4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=TAja6VYJpQw:7fy3_TzeLk4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NickPack?i=TAja6VYJpQw:7fy3_TzeLk4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=TAja6VYJpQw:7fy3_TzeLk4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=TAja6VYJpQw:7fy3_TzeLk4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NickPack?i=TAja6VYJpQw:7fy3_TzeLk4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=TAja6VYJpQw:7fy3_TzeLk4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/NickPack?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=TAja6VYJpQw:7fy3_TzeLk4:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/NickPack?i=TAja6VYJpQw:7fy3_TzeLk4:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=TAja6VYJpQw:7fy3_TzeLk4:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/NickPack?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=TAja6VYJpQw:7fy3_TzeLk4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NickPack?i=TAja6VYJpQw:7fy3_TzeLk4:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=TAja6VYJpQw:7fy3_TzeLk4:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/NickPack?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NickPack/~4/TAja6VYJpQw" height="1" width="1"/>]]></content:encoded>
      <pubDate>Thu, 26 Oct 2006 07:10:00 +0000</pubDate>
    <feedburner:origLink>http://www.nickpack.com/article/basic-ssh-security</feedburner:origLink></item>
    <item>
      <title><![CDATA[Email alert on root login]]></title>
      <link>http://feedproxy.google.com/~r/NickPack/~3/hhFSK3v8Mmc/email-alert-on-root-login-linux</link>
      <description><![CDATA[I, Myself as a paranoid sysadmin like to know when ...]]></description>
      <content:encoded><![CDATA[<p>I, Myself as a paranoid sysadmin like to know when people log into any of the servers that I manage, even when my collegues are the people logging in, setting an e-mail alert on root login is in my opinion needed on any server you run, so you know who's been in and when &amp; is particularly useful for highlighting whether a root password has been comprimised.</p>
<p><span style="font-weight: bold;">Implementing the alert is a very simple process</span><br />log-in to your server as root<br />cd into /root<br />Open .bash_profile in your favourite editor (e.g. vi .bash_profile)<br />And add the following line to the bottom, replacing you@yourdomain.com with the e-mail address you would like the alerts to go to:</p>
<div class="code">echo 'WARNING - Root Shell Access on:' `date` `who` | mail -s "Alert: Root Access from `who | awk '{print $6}'`" you@yourdomain.com</div>
<p><a href="http://feedads.g.doubleclick.net/~a/1rxPZq1qfrrQSJmcnjw40CtP36c/0/da"><img src="http://feedads.g.doubleclick.net/~a/1rxPZq1qfrrQSJmcnjw40CtP36c/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/1rxPZq1qfrrQSJmcnjw40CtP36c/1/da"><img src="http://feedads.g.doubleclick.net/~a/1rxPZq1qfrrQSJmcnjw40CtP36c/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NickPack?a=hhFSK3v8Mmc:Gbk19gMkgfU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=hhFSK3v8Mmc:Gbk19gMkgfU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NickPack?i=hhFSK3v8Mmc:Gbk19gMkgfU:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=hhFSK3v8Mmc:Gbk19gMkgfU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=hhFSK3v8Mmc:Gbk19gMkgfU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NickPack?i=hhFSK3v8Mmc:Gbk19gMkgfU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=hhFSK3v8Mmc:Gbk19gMkgfU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/NickPack?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=hhFSK3v8Mmc:Gbk19gMkgfU:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/NickPack?i=hhFSK3v8Mmc:Gbk19gMkgfU:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=hhFSK3v8Mmc:Gbk19gMkgfU:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/NickPack?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=hhFSK3v8Mmc:Gbk19gMkgfU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NickPack?i=hhFSK3v8Mmc:Gbk19gMkgfU:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=hhFSK3v8Mmc:Gbk19gMkgfU:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/NickPack?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NickPack/~4/hhFSK3v8Mmc" height="1" width="1"/>]]></content:encoded>
      <pubDate>Thu, 26 Oct 2006 07:00:00 +0000</pubDate>
    <feedburner:origLink>http://www.nickpack.com/article/email-alert-on-root-login-linux</feedburner:origLink></item>
    <item>
      <title><![CDATA[Basic Linux Lockdown]]></title>
      <link>http://feedproxy.google.com/~r/NickPack/~3/wGqGr41LDqs/basic-linux-lockdown</link>
      <description><![CDATA[This is a very basic list of procedures commonly u ...]]></description>
      <content:encoded><![CDATA[<p>This is a very basic list of procedures commonly used to lock down a linux web server, it is incomplete and very brief, when I have enough time I will lay it all out properly and add the missing pieces, hopefully though its of some use to you.</p>
<p>Harden SSH (I have a basic tutorial for this on my website, you will need to add an additional user to the server and add them to the wheel group to enable them to use the su command)</p>
<p>Edit the root bash profile so that it e-mails you every time somebody logs in as root (Not really hardening security but lets you know if you have been compromised)</p>
<p>Disable anonymous FTP (unless it is essential)</p>
<p>Disable telnet (if it isn&rsquo;t already)<br />SSH into server and login as root.</p>
<div class="code">vi /etc/xinetd.d/telnet</div>
<p>change <strong>disable = no</strong> to <strong>disable = yes</strong></p>
<p>Save and Exit</p>
<div class="code">/etc/init.d/xinetd restart</div>
<p>Edit /etc/motd &nbsp;- Add a legal warning, as far as I know this has been used as an excuse to get hackers off of charges (in America admittedly, but wise to do anyway)</p>
<p>Disable shell access for accounts that will never be used.</p>
<p>Disable services that won&rsquo;t be used, such as cups,ircd,vnc</p>
<p>Install APF (Advanced Policy Firewall) &ndash; <a href="http://www.rfxnetworks.com/apf.php">http://www.rfxnetworks.com/apf.php</a> - requires kernel iptables modules to be installed prior to install (These should be in most modern red hat kernels already) this is reasonably easy to install and well documented.</p>
<p>Install BFD (Brute Force Detection) for APF - <a href="http://www.rfxnetworks.com/bfd.php">http://www.rfxnetworks.com/bfd.php</a> - this is one of the most useful security tools available, it sequentially checks the /var/log/secure log for failed logins, and automatically bans them in the firewall if they exceed the maximum amount of login failures.</p>
<p>Install RKHunter &ndash; <a href="http://www.rootkit.nl/">http://www.rootkit.nl</a> &ndash; another invaluable tool, this scans system binaries for known exploits and checks for root kits, again easy to install.</p>
<h3>Securing Apache</h3>
<p>Install mod_security for apache - <a href="http://www.modsecurity.org/">http://www.modsecurity.org/</a> - a very useful tool for blocking known script exploits &amp; filtering web requests, there are plenty of rule sets available for this that are very good.</p>
<p>Install mod_evasive - <a href="http://www.zdziarski.com/projects/mod_evasive/">http://www.zdziarski.com/projects/mod_evasive/</a> - mod_evasive is an evasive manoeuvres module for Apache to provide evasive action in the event of an HTTP DoS or DDoS attack or brute force attack.</p>
<h3>Securing PHP</h3>
<p>Set the following parameters in the php.ini.</p>
<p>safe_mode = On <br />By enabling safe_mode parameter, PHP scripts are able to access files only when their owner is the owner of the PHP scripts. This is one of the most important security mechanisms built into the PHP. Effectively counteracts unauthorized attempts to access system files (e.g. /etc/paswd) and adds many restrictions that make unauthorized access more difficult.</p>
<p>safe_mode_gid = Off <br />When safe_mode is turned on and safe_mode_gid is turned off, PHP scripts are able to access files not only when UIDs are the same, but also when the group of the owner of the PHP script is the same as the group of the owner of the file.</p>
<p>open_basedir = directory[:...] <br />When the open_basedir parameter is enabled, PHP will be able to access only those files, which are placed in the specified directories (and subdirectories).</p>
<p>safe_mode_exec_dir = directory[:...] <br />When safe_mode is turned on, system(), exec() and other functions that execute system programs will refuse to start those programs, if they are not placed in the specified directory.</p>
<p>expose_php = Off <br />Turning off the "expose_php" parameter causes that PHP will not disclose information about itself in HTTP headers that are being sent to clients in responses to web requests.</p>
<p>register_globals = Off <br />When the register_globals parameter is turned on, all the EGPCS (Environment, GET, POST, Cookie and Server) variables are automatically registered as global variables. Because it can pose a serious security threat, it is strongly recommended to turn this parameter off (starting from the version 4.2.0, this parameter is turned off by default)</p>
<p>display_errors = Off <br />If the display_errors parameter is turned off, PHP errors and warnings are not being displayed. Because such warnings often reveal precious information like path names, SQL queries etc., it is strongly recommended to turn this parameter off on production servers.</p>
<p>log_errors = On <br />When log_errors is turned on, all the warnings and errors are logged into the file that is specified by the error_log parameter. If this file is not accessible, information about warnings and errors are logged by the Apache server. error_log = filename This parameter specifies the name of the file, which will be used to store information about warnings and errors (attention: this file must be writeable by the user or group apache)</p>
<p><a href="http://feedads.g.doubleclick.net/~a/b3CuiisOuhXysMYBgpryAuqvb-o/0/da"><img src="http://feedads.g.doubleclick.net/~a/b3CuiisOuhXysMYBgpryAuqvb-o/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/b3CuiisOuhXysMYBgpryAuqvb-o/1/da"><img src="http://feedads.g.doubleclick.net/~a/b3CuiisOuhXysMYBgpryAuqvb-o/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NickPack?a=wGqGr41LDqs:DcgrBNNXt4c:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=wGqGr41LDqs:DcgrBNNXt4c:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NickPack?i=wGqGr41LDqs:DcgrBNNXt4c:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=wGqGr41LDqs:DcgrBNNXt4c:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=wGqGr41LDqs:DcgrBNNXt4c:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NickPack?i=wGqGr41LDqs:DcgrBNNXt4c:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=wGqGr41LDqs:DcgrBNNXt4c:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/NickPack?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=wGqGr41LDqs:DcgrBNNXt4c:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/NickPack?i=wGqGr41LDqs:DcgrBNNXt4c:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=wGqGr41LDqs:DcgrBNNXt4c:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/NickPack?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=wGqGr41LDqs:DcgrBNNXt4c:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NickPack?i=wGqGr41LDqs:DcgrBNNXt4c:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=wGqGr41LDqs:DcgrBNNXt4c:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/NickPack?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NickPack/~4/wGqGr41LDqs" height="1" width="1"/>]]></content:encoded>
      <pubDate>Thu, 12 Oct 2006 07:10:00 +0000</pubDate>
    <feedburner:origLink>http://www.nickpack.com/article/basic-linux-lockdown</feedburner:origLink></item>
    <item>
      <title><![CDATA[Linux Partition Schema for 80GB Drives]]></title>
      <link>http://feedproxy.google.com/~r/NickPack/~3/EpLnPuj1_0k/linux-partition-schema-for-80GB-drives-shared-hosting</link>
      <description><![CDATA[I have had various customers ask me for a partitio ...]]></description>
      <content:encoded><![CDATA[<p>I have had various customers ask me for a partition schema to run a linux cpanel webserver with 73GB/80GB drives, to save me having to dig it up every time and to make it available to anyone it may be of use to, I have posted it here</p>
<table>
<tbody>
<tr>
<td><strong>Mount Point</strong></td>
<td><strong>Filesystem</strong></td>
<td><strong>Size</strong></td>
</tr>
<tr>
<td>/</td>
<td>ext3</td>
<td>1024MB (1GB)</td>
</tr>
<tr>
<td>/boot</td>
<td>ext3</td>
<td>100MB</td>
</tr>
<tr>
<td style="font-weight: bold; color: #ff0000;">-</td>
<td>swap</td>
<td>Twice the amount of system RAM</td>
</tr>
<tr>
<td>/tmp</td>
<td>ext3</td>
<td>1024MB (1GB)</td>
</tr>
<tr>
<td>/usr</td>
<td>ext3</td>
<td>10240MB (10GB)</td>
</tr>
<tr>
<td>/var</td>
<td>ext3</td>
<td>15360MB (15GB)</td>
</tr>
<tr>
<td>/home</td>
<td>ext3</td>
<td>Fill all remaning space</td>
</tr>
</tbody>
</table>
<p><a href="http://feedads.g.doubleclick.net/~a/qAD4SXa29zOvsMtFVkTUDd5dHpA/0/da"><img src="http://feedads.g.doubleclick.net/~a/qAD4SXa29zOvsMtFVkTUDd5dHpA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/qAD4SXa29zOvsMtFVkTUDd5dHpA/1/da"><img src="http://feedads.g.doubleclick.net/~a/qAD4SXa29zOvsMtFVkTUDd5dHpA/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NickPack?a=EpLnPuj1_0k:Aip_deYYqvc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=EpLnPuj1_0k:Aip_deYYqvc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NickPack?i=EpLnPuj1_0k:Aip_deYYqvc:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=EpLnPuj1_0k:Aip_deYYqvc:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=EpLnPuj1_0k:Aip_deYYqvc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NickPack?i=EpLnPuj1_0k:Aip_deYYqvc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=EpLnPuj1_0k:Aip_deYYqvc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/NickPack?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=EpLnPuj1_0k:Aip_deYYqvc:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/NickPack?i=EpLnPuj1_0k:Aip_deYYqvc:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=EpLnPuj1_0k:Aip_deYYqvc:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/NickPack?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=EpLnPuj1_0k:Aip_deYYqvc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NickPack?i=EpLnPuj1_0k:Aip_deYYqvc:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=EpLnPuj1_0k:Aip_deYYqvc:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/NickPack?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NickPack/~4/EpLnPuj1_0k" height="1" width="1"/>]]></content:encoded>
      <pubDate>Thu, 12 Oct 2006 07:00:00 +0000</pubDate>
    <feedburner:origLink>http://www.nickpack.com/article/linux-partition-schema-for-80GB-drives-shared-hosting</feedburner:origLink></item>
    <item>
      <title><![CDATA[Fix for logrotate when /tmp is mounted noexec]]></title>
      <link>http://feedproxy.google.com/~r/NickPack/~3/6mpwGfbSbbQ/logrotate-fix-for-tmp-noexec</link>
      <description><![CDATA[With /tmp mounted noexec on red hat based distros, ...]]></description>
      <content:encoded><![CDATA[<p>With /tmp mounted noexec on red hat based distros, logrotate at the end of every week doesn't actually write to the blank log files it creates, instead it writes new entries to the archived .1 files.<br />Thanks again to Jonathan from way to the web.</p>
<p>To fix this error you need to:</p>
<pre class="brush: plain;">
mkdir /mytmp
</pre>
<p>Then edit /etc/cron.daily/logrotate and set the TMPDIR so it looks like this:</p>
<pre class="brush: plain;">
#!/bin/sh 
TMPDIR=/mytmp
export TMPDIR
/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$? 

if [ $EXITVALUE != 0 ]; then 
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
</pre>
<p>Then run this to ensure its working ok:</p>
<pre class="brush: plain">
/etc/cron.daily/logrotate
</pre>
<p><a href="http://feedads.g.doubleclick.net/~a/TFnIyaQ_6kgErwXk3ensESKscyY/0/da"><img src="http://feedads.g.doubleclick.net/~a/TFnIyaQ_6kgErwXk3ensESKscyY/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/TFnIyaQ_6kgErwXk3ensESKscyY/1/da"><img src="http://feedads.g.doubleclick.net/~a/TFnIyaQ_6kgErwXk3ensESKscyY/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NickPack?a=6mpwGfbSbbQ:MbbrxVful1s:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=6mpwGfbSbbQ:MbbrxVful1s:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NickPack?i=6mpwGfbSbbQ:MbbrxVful1s:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=6mpwGfbSbbQ:MbbrxVful1s:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=6mpwGfbSbbQ:MbbrxVful1s:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NickPack?i=6mpwGfbSbbQ:MbbrxVful1s:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=6mpwGfbSbbQ:MbbrxVful1s:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/NickPack?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=6mpwGfbSbbQ:MbbrxVful1s:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/NickPack?i=6mpwGfbSbbQ:MbbrxVful1s:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=6mpwGfbSbbQ:MbbrxVful1s:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/NickPack?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=6mpwGfbSbbQ:MbbrxVful1s:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NickPack?i=6mpwGfbSbbQ:MbbrxVful1s:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=6mpwGfbSbbQ:MbbrxVful1s:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/NickPack?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NickPack/~4/6mpwGfbSbbQ" height="1" width="1"/>]]></content:encoded>
      <pubDate>Mon, 09 Oct 2006 07:10:00 +0000</pubDate>
    <feedburner:origLink>http://www.nickpack.com/article/logrotate-fix-for-tmp-noexec</feedburner:origLink></item>
    <item>
      <title><![CDATA[Using Exim as a smarthost]]></title>
      <link>http://feedproxy.google.com/~r/NickPack/~3/QbR6g7chgVw/exim-smarthost-using-smartrouters</link>
      <description><![CDATA[This proved useful when I implemented MailScanner  ...]]></description>
      <content:encoded><![CDATA[<p>This proved useful when I implemented <a href="http://www.mailscanner.info">MailScanner</a> for <a href="http://www.carbidefinger.net">Carbide-Finger Limited</a></p>
<p>By adding a smart router you can act as the primary mx for a domain that actually isn't local to your server at all for example: I used this to push virus &amp; spam filtered mail onto a customers Exchange Server negating the need for POP boxes.</p>
<p>To implement smart routers:</p>
<div class="code">touch /etc/staticroutes</div>
<p>Then open /etc/staticroutes in your favourite text editor (vi is my preference) and add each domain you would like pushed on in the following format (one per line):</p>
<div class="code">domainname.com: target.mail.server</div>
<p>target.mail.server can be a FQDN or an IP address</p>
<p>In the Routers Configuration section of your exim.conf add the following:</p>
<div class="code">static_route:<br />&nbsp;&nbsp;&nbsp;driver = manualroute<br />&nbsp;&nbsp;&nbsp;transport = remote_smtp<br />&nbsp;&nbsp;&nbsp;route_data = ${lookup{$domain}lsearch{/etc/staticroutes}}</div>
<p>Then after an exim restart you should have working smart routers (its always worthwhile to tail the exim_mainlog for a while afterwards just to make sure its ok)</p>
<div class="code">service exim restart</div>
<p>Thanks to 'projectandrew' on the cPanel Forums for this one.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/6zgYtP5KCbJLr4-PbOgPBAHyfW4/0/da"><img src="http://feedads.g.doubleclick.net/~a/6zgYtP5KCbJLr4-PbOgPBAHyfW4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/6zgYtP5KCbJLr4-PbOgPBAHyfW4/1/da"><img src="http://feedads.g.doubleclick.net/~a/6zgYtP5KCbJLr4-PbOgPBAHyfW4/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NickPack?a=QbR6g7chgVw:wGdSN0wCF70:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=QbR6g7chgVw:wGdSN0wCF70:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NickPack?i=QbR6g7chgVw:wGdSN0wCF70:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=QbR6g7chgVw:wGdSN0wCF70:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=QbR6g7chgVw:wGdSN0wCF70:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NickPack?i=QbR6g7chgVw:wGdSN0wCF70:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=QbR6g7chgVw:wGdSN0wCF70:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/NickPack?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=QbR6g7chgVw:wGdSN0wCF70:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/NickPack?i=QbR6g7chgVw:wGdSN0wCF70:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=QbR6g7chgVw:wGdSN0wCF70:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/NickPack?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=QbR6g7chgVw:wGdSN0wCF70:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NickPack?i=QbR6g7chgVw:wGdSN0wCF70:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=QbR6g7chgVw:wGdSN0wCF70:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/NickPack?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NickPack/~4/QbR6g7chgVw" height="1" width="1"/>]]></content:encoded>
      <pubDate>Sun, 08 Oct 2006 07:12:00 +0000</pubDate>
    <feedburner:origLink>http://www.nickpack.com/article/exim-smarthost-using-smartrouters</feedburner:origLink></item>
    <item>
      <title><![CDATA[Exim ACL Spam Filters]]></title>
      <link>http://feedproxy.google.com/~r/NickPack/~3/D4xWhBQCqAM/exim-acl-spam-filtering</link>
      <description><![CDATA[This is a mirror of http://vamos-wentworth.org/exi ...]]></description>
      <content:encoded><![CDATA[<p>This is a mirror of <a href="http://vamos-wentworth.org/exim-tricks.html">http://vamos-wentworth.org/exim-tricks.html</a> (With a few very minor ammendments)
  
  I have been unable to get to the site since september so I decided to mirror    the above URL, It was very useful information for me when I first started out    with exim hence my sharing it.</p>
<p>All credit goes to the original author, <strong>THIS IS NOT A DOCUMENT WRITTEN BY MYSELF</strong> so all rights go to the original author. rossz-work [at] vamos-wentworth [dot]    org as well.</p>
<p>These antispam tips are for Exim 4.x. If you don't know how to modify the helo,  rcpt, and data ACLs, then these suggestions won't do you much good.</p>
<h2>HELO ACL</h2>
<p>You can block a lot of spammers right after they say HELO. They have a tendency    to lie but, fortunately, it's often easy to catch them in their lie.</p>
<p>The first thing a remote system is supposed to do when it connects is to say    "HELO domain.com". It is legal to use an ip address with the HELO,    but losing acceptance. A spammer might try to HELO with your own ip address.    There is absolutely no legitimate reason for someone else to use your ip address    here. Plug your own ip address in here where it says ##.##.##.##. Repeat this    for each IP address you handle.</p>
<pre class="brush: plain;">
deny message = HELO/EHLO with my ip address. You are not me.
	log_message = HELO/EHLO my.ip
	condition = ${if eq {$sender_helo_name}{##.##.##.##}{yes}{no}}</pre>
<p>Basically the same thing as the previous filter, but using your domain name    instead of your ip address. You should repeat this filter for each domain you    control.</p>
<pre class="brush: plain;">
deny message = HELO/EHLO with my domain name. You are not me.
	log_message = HELO/EHLO my.domain
	condition = ${if match {$sender_helo_name}{your-domain.com}    {yes}{no}}</pre>
<p>Giving a domain name of 'none' isn't valid, so tell them to bugger off. This    filter can be left out since the "period" filter below will catch    it.</p>
<pre class="brush: plain;">
deny message = No HELO/EHLO name specified.
	log_message = HELO/EHLO none
	condition = ${if match {$sender_helo_name}{none} {yes}{no}}</pre>
<p>A remote system saying they are localhost? Sure they are. This filter can also    be omitted if you use the "period" filter below.</p>
<pre class="brush: plain;">
deny message = You are not localhost.
	log_message = HELO/EHLO localhost
	condition = ${if match {$sender_helo_name}{localhost}{yes}{no}}</pre>
<p>A proper domain will contain at least one period. A good percentage of spam    worms HELO with random characters without a period.</p>
<pre class="brush: plain;">
deny message = Invalid HELO/EHLO. You are either spam/a virus, or your system administrator has incorrectly configured your network.
	condition = ${if match{$sender_helo_name}{\\.}{no}{yes}}
</pre>
<h2>RCPT ACL</h2>
<p>Spammers like to forge some big names when they send you email. We can't easily    check all of them, not until Sender Permitted From (SPF) is widely used. At    least we can check for some of the most commonly abused domains, Yahoo, Hotmail,    MSN, and AOL. These four filters will reject email with forged From: addresses    containing the "big four" domains.</p>
<pre class="brush: plain;">
#Fake Yahoo
deny message = Suspected Faked Yahoo Account, E-mail Rejected.
	log_message = Fake Yahoo
	senders = *@yahoo.com
	condition = ${if match{$sender_host_name}{\Nyahoo.com$\N}{no}{yes}}
</pre>
<pre class="brush: plain;">
#Fake Hotmail
deny message = Suspected Faked Hotmail Account, E-mail Rejected.
	log_message = Fake hotmail
	senders = *@hotmail.com
	condition = ${if match {$sender_host_name}{\Nhotmail.com$\N}{no}{yes}}
</pre>
<pre class="brush: plain;">
#Fake MSN
deny message = Suspected Faked MSN Account, E-mail Rejected.
	log_message = Fake MSN
	senders = *@msn.com
	condition = ${if match {$sender_host_name}{\N(hotmail|msn).com$\N}{no}{yes}}
</pre>
<pre class="brush: plain;">
# Fake AOL
deny message = Suspected Faked AOL Account, E-mail Rejected.
	log_message = Fake AOL
	senders = *@aol.com
	condition = ${if match {$sender_host_name}{\Nmx.aol.com$\N}{no}{yes}}
</pre>
<p>Of course, using a few good blacklists is a good idea. I put my blacklist checks immediately after the big four filters.</p>
<h2>DATA ACL</h2>
<p>A valid email should have a message id. Spamming software (and viruses) often don't. So refuse them. Note, this filter has been known to break the rare email    sent from a highly customized Qmail server. Personally, I dont' care.</p>
<pre class="brush: plain;">
deny condition = ${if !def:h_Message-ID: {1}}
	message = Message SHOULD have Message-ID: but does not
</pre>
<p>Email should have a proper date. So goodbye if it doesn't.</p>
<pre class="brush: plain;">
deny condition = ${if !def:h_Date: {1}}
	message = Message SHOULD have Date: but does not
</pre>
<p>You'll need the Exiscan patch for the mime handling to work.</p>
<p>Required to do any mime handling, plus, a broken mime attachment might be an attempt to infect or break into your system.</p>
<pre class="brush: plain;">
deny message = Serious MIME defect detected ($demime_reason)
	log_message = Broken MIME ($mime_reason)
	demime = *
	condition = ${if &gt;{$demime_errorlevel}{2}{1}{0}}
</pre>
<p>Refuse dangerous attachments. This gets a large number of viruses. It also catches a lot of spam with hidden surprises.</p>
<pre class="brush: plain;">
deny message = $found_extension files are not accepted here
	log_message = Dangerous extension ($found_extension)
	demime = com:vbs:bat:pif:scr:exe
</pre>
<p>For Windows clients, Microsoft has included a lovely little surprise. It is possible to attach a file with a CLSID in the name which causes Windows to hide the file extension. This is entirely independent of the "Hide file extensions    for known file types" folder option. This is extremely dangerous, so lets    just refuse the bastards.</p>
<pre class="brush: plain;">
deny message = Hiding of file extensions is not allowed!
	log_message = Dangerous extension (CLSID hidden)
	regex = ^(?i)Content-Disposition::(.*?)filename=\\s*"+((\{[a-hA-H0-9-]{25,}\})|((.*?)\\s{10,}(.*?)))"+\$
</pre>
<p><a href="http://feedads.g.doubleclick.net/~a/1eyTUQ0u6inQ9y0lfNhhrEVmfxI/0/da"><img src="http://feedads.g.doubleclick.net/~a/1eyTUQ0u6inQ9y0lfNhhrEVmfxI/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/1eyTUQ0u6inQ9y0lfNhhrEVmfxI/1/da"><img src="http://feedads.g.doubleclick.net/~a/1eyTUQ0u6inQ9y0lfNhhrEVmfxI/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NickPack?a=D4xWhBQCqAM:q_Ymus-KPxw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=D4xWhBQCqAM:q_Ymus-KPxw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NickPack?i=D4xWhBQCqAM:q_Ymus-KPxw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=D4xWhBQCqAM:q_Ymus-KPxw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=D4xWhBQCqAM:q_Ymus-KPxw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NickPack?i=D4xWhBQCqAM:q_Ymus-KPxw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=D4xWhBQCqAM:q_Ymus-KPxw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/NickPack?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=D4xWhBQCqAM:q_Ymus-KPxw:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/NickPack?i=D4xWhBQCqAM:q_Ymus-KPxw:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=D4xWhBQCqAM:q_Ymus-KPxw:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/NickPack?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=D4xWhBQCqAM:q_Ymus-KPxw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NickPack?i=D4xWhBQCqAM:q_Ymus-KPxw:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=D4xWhBQCqAM:q_Ymus-KPxw:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/NickPack?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NickPack/~4/D4xWhBQCqAM" height="1" width="1"/>]]></content:encoded>
      <pubDate>Sun, 08 Oct 2006 07:10:00 +0000</pubDate>
    <feedburner:origLink>http://www.nickpack.com/article/exim-acl-spam-filtering</feedburner:origLink></item>
    <item>
      <title><![CDATA[Unreadable redirected user folders after rebuild]]></title>
      <link>http://feedproxy.google.com/~r/NickPack/~3/O2H0NSUjs9I/recovering-redirected-user-folders-sbs2003</link>
      <description><![CDATA[I recently re-built an SBS 2003 Machine for a clie ...]]></description>
      <content:encoded><![CDATA[<p>I recently re-built an SBS 2003 Machine for a client that had user profiles folder re-direction configured previously and was horrified to find that after the rebuild, I couldn't take ownership, delete or even read any of the users folders even as administrator, I searched and searched but could find no answer to this problem.</p>
<p>Having tried various methods and suggestions from other IT professionals, In the end I gave up.</p>
<p>Thankfully I found a really simple tool that enabled me to reclaim ownership of these folders and files so I thought I would post it here to save anyone else from the same data-loss problems.</p>
<p>The tool is a very simple folder locking tool (Just simply applies a password to any NTFS folder) called DirLock.</p>
<p>Out of curiousity I decided to try it on the re-direction folders, It's as simple as locking the folder with it, then unlocking it again to restore ownership of all files and subfolders to the administrators account.</p>
<p>Hopefully this information is some use to somebody.</p>
<p><a href="http://www.download.com/DirLock/3000-2092_4-10416554.html">See the download.com review of, and download DirLock</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/TSepWmfE1Ltet2MD89HFiMJGuoU/0/da"><img src="http://feedads.g.doubleclick.net/~a/TSepWmfE1Ltet2MD89HFiMJGuoU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/TSepWmfE1Ltet2MD89HFiMJGuoU/1/da"><img src="http://feedads.g.doubleclick.net/~a/TSepWmfE1Ltet2MD89HFiMJGuoU/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/NickPack?a=O2H0NSUjs9I:BJdw04H6dmY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=O2H0NSUjs9I:BJdw04H6dmY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/NickPack?i=O2H0NSUjs9I:BJdw04H6dmY:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=O2H0NSUjs9I:BJdw04H6dmY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/NickPack?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=O2H0NSUjs9I:BJdw04H6dmY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/NickPack?i=O2H0NSUjs9I:BJdw04H6dmY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=O2H0NSUjs9I:BJdw04H6dmY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/NickPack?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=O2H0NSUjs9I:BJdw04H6dmY:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/NickPack?i=O2H0NSUjs9I:BJdw04H6dmY:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=O2H0NSUjs9I:BJdw04H6dmY:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/NickPack?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=O2H0NSUjs9I:BJdw04H6dmY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/NickPack?i=O2H0NSUjs9I:BJdw04H6dmY:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/NickPack?a=O2H0NSUjs9I:BJdw04H6dmY:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/NickPack?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/NickPack/~4/O2H0NSUjs9I" height="1" width="1"/>]]></content:encoded>
      <pubDate>Tue, 19 Sep 2006 07:10:00 +0000</pubDate>
    <feedburner:origLink>http://www.nickpack.com/article/recovering-redirected-user-folders-sbs2003</feedburner:origLink></item>
  </channel>
</rss>
