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

<channel>
	<title>stiefels.net &#187; Un*x</title>
	<atom:link href="http://www.stiefels.net/category/unx/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.stiefels.net</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Sun, 20 Sep 2009 10:39:23 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Synchronizing OmniFocus via WebDAV on Gentoo Linux</title>
		<link>http://www.stiefels.net/2008/11/30/synchronizing-omnifocus-via-webdav-on-gentoo-linux/</link>
		<comments>http://www.stiefels.net/2008/11/30/synchronizing-omnifocus-via-webdav-on-gentoo-linux/#comments</comments>
		<pubDate>Sun, 30 Nov 2008 15:02:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[/etc]]></category>
		<category><![CDATA[Un*x]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OmniFocus]]></category>
		<category><![CDATA[Sync]]></category>

		<guid isPermaLink="false">http://www.stiefels.net/2008/11/30/synchronizing-omnifocus-via-webdav-on-gentoo-linux/</guid>
		<description><![CDATA[The biggest new feature in [OmniFocus](http://www.omnigroup.com/applications/omnifocus) 1.5 will be the possibility to synchronize multiple OmniFocus to one single database.
This is very nice as, I suppose, a lot of people have multiple installations of OmniFocus and keeping all of them up to date is a hassle. Especially now, as OmniFocus is also available for the iPhone [...]]]></description>
			<content:encoded><![CDATA[<p>The biggest new feature in [OmniFocus](http://www.omnigroup.com/applications/omnifocus) 1.5 will be the possibility to synchronize multiple OmniFocus to one single database.<br />
This is very nice as, I suppose, a lot of people have multiple installations of OmniFocus and keeping all of them up to date is a hassle. Especially now, as OmniFocus is also available for the iPhone a synchronization feature is an absolute must to keep doing GTD "stress-free".</p>
<p>There are several ways to set up the synchronization feature:<br />
* **[MobileMe](http://me.com)** This is probably the most convenient way but it requires you to have a MobileMe account.<br />
* **Bonjour** Synchronizing via Bonjour requires to make one Mac to function as a "database server" (which has to be up and running if you want to sync) and synchronizing is only possible over the local network.<br />
* **Disk** If you have NAS system or a USB hard drive connected to your AirPort you could use this option. But unfortunately the iPhone does not support this way.<br />
* **WebDAV** If you have access to a web server you could use that one as an OmniFocus database server. This way you have access to your tasks from all over the world.</p>
<p>In this tutorial I want to show you how you can configure an apache web server to support WebDAV and what you have to do to make OmniFocus use your very own "cloud".<br />
<span id="more-101"></span></p>
<p>I'll use Gentoo Linux to explain the single steps but it should be similar on different platforms. There is also a tutorial on how to configure [Leopard to speak WebDAV](http://manas.tungare.name/blog/howto-setup-webdav-on-mac-os-x-leopard-for-syncing-omnifocus-to-iphone/).</p>
<p>## What is WebDAV?<br />
The first question may be: What the heck is WebDAV?</p>
<p>Most parts of the web is read-only, right? You can't go to apple.com and change their front page by putting some Dell products on it. The standard HTTP protocol doesn't allow such operations.<br />
But what if you want to *allow* other people to change your data (without using content management systems)?<br />
To extend the standard HTTP functionality a working group of the [Internet Engineering Task Force](http://www.ietf.org/) developed a protocol called WebDAV which means *Web-based Distributed Authoring and Versioning*. This extension to HTTP allows a web page to become both a readable and writable medium.</p>
<p>OmniFocus is using this protocol not to modify a web page but to keep your "task database" up to date.</p>
<p>## Convincing the apache web server to speak WebDAV<br />
The first thing we have to do is to make apache speak WebDAV.</p>
<p>Support for WebDAV can be added to apache by loading two modules:<br />
* [mod\_dav](http://httpd.apache.org/docs/2.0/mod/mod_dav.html): Enables WebDAV functionality<br />
* [mod\_dav\_fs](http://httpd.apache.org/docs/2.0/mod/mod_dav_fs.html): Provides access to resources on the server's filesystem</p>
<p>### Check WebDAV modules</p>
<p>To see if you've already compiled these two modules, you can have a look in */usr/lib64/apache2/modules* (or */usr/lib/apache2/modules* if you have a 32-bit system). There should be a *mod_dav.so* and a *mod_dav_fs.so* file.</p>
<p>### Compile WebDAV modules<br />
If you can't find your WebDAV modules you'll have to compile them.<br />
To do this, edit your */etc/make.conf* file and add *dav* and *dav_fs* to the *APACHE2_MODULES* variable.</p>
<p>    APACHE2_MODULES="dav dav_fs [...]"</p>
<p>If you do an</p>
<p>    emerge -vp apache</p>
<p>you should see that the *dav* and *dav_fs* modules will be compiled the next time you compile apache.<br />
To compile apache, simply type</p>
<p>    emerge apache</p>
<p>This may take some time but once it is finished you should see the compiled modules in your apache modules directory.</p>
<p>### Activating the WebDAV modules<br />
To activate your WebDAV modules you have to edit your */etc/conf.d/apache* file and change the *APACHE2_OPTS* variable by appending *-D DAV*.</p>
<p>    APACHE2_OPTS="-D DAV [...]"</p>
<p>## Enabling WebDAV for Virtual Host<br />
Assuming that you've already set up a virtual host for your webpage, we only have to modify this virtual host configuration.<br />
All we need is to define a directory within your DocumentRoot which should be used for OmniFocus and enable WebDAV for it. Also, we want to set up a password protection so nobody else has access to your data. Enabling SSL for this domain is probably not the baddest idea but that is not topic of this tutorial.</p>
<p>    <location /omnifocus><br />
        DAV On<br />
        AuthType Basic<br />
        AuthName "OmniFocusLogin"<br />
        AuthUserFile /var/www/sub.domain.com/omnifocuslogins<br />
        Require valid-user<br />
    </location></p>
<p>This defines that your OmniFocus database is reachable at *http://your.domain.com/omnifocus*.</p>
<p>Don't forget to create the *omnifocus* directory in your *htdocs* directory and change the owner to *apache*:</p>
<p>    mkdir /var/www/your.domain.com/htdocs/omnifocus<br />
    chown -R apache:apache /var/www/your.domain.com/htdocs/omnifocus</p>
<p>## Password protection<br />
As you can see we already configured password protection for this URL.<br />
All we need to do is to create the *omnifocuslogins* file in which we will define the username and passwords.<br />
To create this file you can simply run this command:</p>
<p>    htpasswd2 -c /var/www/sub.domain.com/omnifocuslogins myuser</p>
<p>## Restart Apache<br />
To make all your changes active you have to restart apache.</p>
<p>    /etc/init.d/apache2 restart</p>
<p>Apache now allows read and write access to the */omnifocus* directory via WebDAV.</p>
<p>## Configuring OmniFocus<br />
Telling OmniFocus to use your newly configured WebDAV server for synchronization is very easy.<br />
All you have to do is to open the application's preferences, select the *sync* tab, select *Sync with: Advanced* and enter the URL of your server. By clicking on *sync now* you start the synchronization process.</p>
<p><img src="http://www.stiefels.net/wp-content/uploads/2008/11/omnifocussyncprefs.png" width="480" height="259" alt="OmniFocusSyncPrefs.png" /></p>
<p>The first time you are doing this you have to enter the username and password you have defined above.<br />
If everything worked fine you should see something like *LastSync: Today, 3:26pm".  Congratulations!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stiefels.net/2008/11/30/synchronizing-omnifocus-via-webdav-on-gentoo-linux/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Building PostgreSQL on Leopard</title>
		<link>http://www.stiefels.net/2007/11/22/building-postgresql-on-leopard/</link>
		<comments>http://www.stiefels.net/2007/11/22/building-postgresql-on-leopard/#comments</comments>
		<pubDate>Thu, 22 Nov 2007 10:41:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[Un*x]]></category>
		<category><![CDATA[leopard]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.stiefels.net/2007/11/22/building-postgresql-on-leopard/</guid>
		<description><![CDATA[As you might know the [PostgreSQL Global Development Group](http://www.postgresql.org) is currently working on the final version of the PostgreSQL Database Management System (DBMS) 8.3 which has some nice features. Unfortunately, there is no prebuilt package available for Mac OS X of the current beta versions. But fortunately building PostgreSQL is very easy on Leopard:

## Requirements
This [...]]]></description>
			<content:encoded><![CDATA[<p>As you might know the [PostgreSQL Global Development Group](http://www.postgresql.org) is currently working on the final version of the PostgreSQL Database Management System (DBMS) 8.3 which has some nice features. Unfortunately, there is no prebuilt package available for Mac OS X of the current beta versions. But fortunately building PostgreSQL is very easy on Leopard:<br />
<span id="more-70"></span></p>
<p>## Requirements<br />
This short tutorial requires you to have Mac OS X Leopard (it also may work with Tiger) installed on your system along with the [Xcode tools](http://developer.apple.com/tools/xcode/).</p>
<p>## Getting the sources<br />
The sources of PostgreSQL are free available from one of the mirrors listed [here](http://wwwmaster.postgresql.org/download/mirrors-ftp). Download the current beta from the *source* directory and unpack it.</p>
<p>## Configuring<br />
Before you can start the actual build process, you have to generate the Makefiles. This is done by running the included **configure** script with optional parameters. Available parameters can be listed with the following command:</p>
<p>    $ ./configure --help</p>
<p>I decided to build my installation with the following parameters:</p>
<p>    $ ./configure --prefix=/opt/local/postgresql83b3<br />
                    --enable-thread-safety<br />
                    --without-docdir<br />
                    --with-perl<br />
                    --with-gssapi<br />
                    --with-pam<br />
                    --with-bonjour<br />
                    --with-openssl</p>
<p>There is no need to install 3rd party libraries when you use these parameters, but feel free to change them. For a full description of all the parameters have a look at this [website](http://www.postgresql.org/docs/8.3/static/install-procedure.html). The **configure** script now does some checks and creates the Makefiles needed for the build process.</p>
<p>## Building PostgreSQL<br />
The actual build process is started by running the **make** command. The created Makefiles are used to tell the **make** program which files have to be compiled and how the whole application has to build together.</p>
<p>    $ make</p>
<p>Depending on your machine the build process takes a few minutes. If **make** succeeds you should see this line:</p>
<p>    All of PostgreSQL successfully made. Ready to install.</p>
<p>Great!</p>
<p>## Installing PostgreSQL<br />
The install process is as easy as the build process. The only thing we do is telling **make** to start the installation:</p>
<p>    $ make install</p>
<p>A few seconds later you should see this:</p>
<p>    PostgreSQL installation complete.</p>
<p>## Creating the database cluster<br />
Before we can use PostgreSQL we have to create at least one database cluster. That is the location where all the data will be stored (here in the directory *data*).</p>
<p>    $ cd /opt/local/postgresql83b3<br />
    $ bin/initdb ./data</p>
<p>## Starting the server process<br />
Starting the PostgreSQL server process is done via the **pg_ctl** program located in the *bin* directory.</p>
<p>    $ bin/pg_ctl -D ./data start</p>
<p>To stop it, use</p>
<p>    $ bin/pg_ctl -D ./data stop</p>
<p>## Using launchd to start automatically<br />
If you plan to use PostgreSQL frequently you might be interested in starting PostgreSQL automatically when you log into your system. To do this, download [this file](http://www.stiefels.net/wp-content/uploads/2007/11/net.stiefels.postgresql.starter.plist) and copy it into *~/Library/LaunchAgents* (you may create the *LaunchAgents* directory if it doesn’t already exist). Next time you log in, the PostgreSQL server process is started automatically. The file expects to find your PostgreSQL installation in */opt/local/postgresql83b3*. Feel free to change it, if you installed it somewhere else.</p>
<p>## Connecting to the database<br />
To test if your installation is actually working you can use **psql** to make a local connection to your server. Please note, that PostgreSQL doesn’t allow any network connections using the default configuration. Have a look at the [manual](http://www.postgresql.org/docs/8.3/static/index.html) for further information.</p>
<p>    $ cd /opt/local/postgresql83b3$ bin/psql -d postgres<br />
    Welcome to psql 8.3beta3, the PostgreSQL interactive terminal.</p>
<p>## Congratulations<br />
The purpose of this little tutorial is to show you how source packages can be compiled on Mac OS X (and other Unices). This way of building applications (configure/make/make install) is a common way in the Unix world and you'll come across these tools very often if you build applications from source packages.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stiefels.net/2007/11/22/building-postgresql-on-leopard/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Block Specific E-mail Addresses with Exim</title>
		<link>http://www.stiefels.net/2007/07/22/block-specific-e-mail-addresses-with-exim/</link>
		<comments>http://www.stiefels.net/2007/07/22/block-specific-e-mail-addresses-with-exim/#comments</comments>
		<pubDate>Sun, 22 Jul 2007 11:43:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Un*x]]></category>
		<category><![CDATA[blacklisting]]></category>
		<category><![CDATA[exim]]></category>

		<guid isPermaLink="false">http://www.stiefels.net/2007/07/22/block-specific-e-mail-addresses-with-exim/</guid>
		<description><![CDATA[Recently I was flooded with e-mails a friend sent me. Mails with PowerPoint or PDF attachments of hundreds of kilobytes with jokes. Although I told him to stop this he ignored me and continued sending me this crap.
I could create a rule in Mail.app which deletes such mails but that wouldn't help as the rule [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I was flooded with e-mails a friend sent me. Mails with PowerPoint or PDF attachments of hundreds of kilobytes with jokes. Although I told him to stop this he ignored me and continued sending me this crap.<br />
I could create a rule in Mail.app which deletes such mails but that wouldn't help as the rule mechanism only works with received mails. But I don't even want to have to download them.<br />
A better solution is to let the mail server (here [Exim](http://www.exim.org)) deny such mails while they are delivered.<br />
<span id="more-56"></span></p>
<p>To do that we first have to store the e-mail address of the sender in a database. This allows us to make changes to our blacklist without having to restart the mail server. As my [greylisting implementation](http://www.stiefels.net/2006/12/10/implementing-greylisting-with-exim/) already uses [MySQL](http://www.mysql.com) I will use that for blacklisting too.</p>
<p>     CREATE TABLE blacklist (<br />
       id int(11) PRIMARY KEY auto_increment,<br />
       from_local_part varchar(100),<br />
       from_domain varchar(100)<br />
     );</p>
<p>This creates a new table in the database in which an ID (just for administration purposes), a local part (the part before the @) and the domain of the sender can be stored.</p>
<p>A new entry in the blacklist can be inserted with:</p>
<p>    INSERT INTO blacklist<br />
    VALUES (NULL, 'someone', 'somedomain.com');</p>
<p>In the exim configuration file (exim.conf) we first create a macro which contains the controlling SQL statement:</p>
<p>    # blacklist macro<br />
    BLACKLIST_TEST = SELECT CASE \<br />
      WHEN COUNT(*) > 0 THEN 1 \<br />
      ELSE 0 \<br />
    END \<br />
    FROM blacklist \<br />
    WHERE from_domain ='${quote_mysql:$sender_address_domain}' \<br />
    AND (from_local_part = '${quote_mysql:$sender_address_local_part}' \<br />
         OR from_local_part = '*')</p>
<p>As you can see we want to be able to block complete domains by inserting a asterisk in the *from_local_part* column. The statement can return two different values. A *1* is returned if a entry is found and the mail should be blocked. A *0* is returned if the mail should not be blocked by the blacklist mechanism.</p>
<p>If you haven't configured exim to use MySQL yet be sure it is compiled with MySQL support and add the following line to *exim.conf* in order to set the connection parameters:</p>
<p>    hide mysql_servers = server/database/username/password</p>
<p>The last thing we have to do is to run the SQL statement every time a mail comes in. A Exim mail server normally uses access control lists in its configuration. We will build our blacklist mechanism in the *acl_check_rcpt* control list:</p>
<p>    # access control lists<br />
    begin acl</p>
<p>    acl_check_rcpt:<br />
      ...<br />
      warn  set acl_m3 = ${lookup mysql{BLACKLIST_TEST}{$value}}<br />
      ...<br />
      deny  message    = Blacklisted. Your mail has been blocked.<br />
            condition  = ${if eq{$acl_m3}{1}}<br />
      ...</p>
<p>The ACL configuration consists of two entries.<br />
The first (beginning with *warn*) just runs the SQL statement and saves the result (*1* or *0*) in a variable called *acl_m3*.<br />
Below the second entry (beginning with *deny*) uses that variable to decide whether to deny the mail or not. If denied the mail server of the sender gets the error message *Blacklisted. Your mail has been blocked.*<br />
Don't forget to restart Exim to make the changes work.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stiefels.net/2007/07/22/block-specific-e-mail-addresses-with-exim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mounting Remote Computers Using MacFUSE and sshfs</title>
		<link>http://www.stiefels.net/2007/02/26/mounting-remote-computers-using-macfuse-and-sshfs/</link>
		<comments>http://www.stiefels.net/2007/02/26/mounting-remote-computers-using-macfuse-and-sshfs/#comments</comments>
		<pubDate>Mon, 26 Feb 2007 19:58:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Un*x]]></category>
		<category><![CDATA[MacFUSE]]></category>
		<category><![CDATA[sshfs]]></category>

		<guid isPermaLink="false">http://www.stiefels.net/2007/02/26/mounting-remote-computers-using-macfuse-and-sshfs/</guid>
		<description><![CDATA[With the Linux kernel version 2.6.14 a technology called FUSE was merged into the mainstream Linux kernel. FUSE stands for *Filesystem in Userspace* and it allows normal, non-privileged users to create their own filesystems.
Amit Singh (author of the book [Mac OS X Internals](http://www.osxbook.com)) ported this great technology to the Mac: MacFUSE.

You now may think "Wow. [...]]]></description>
			<content:encoded><![CDATA[<p>With the Linux kernel version 2.6.14 a technology called FUSE was merged into the mainstream Linux kernel. FUSE stands for *Filesystem in Userspace* and it allows normal, non-privileged users to create their own filesystems.</p>
<p>Amit Singh (author of the book [Mac OS X Internals](http://www.osxbook.com)) ported this great technology to the Mac: MacFUSE.</p>
<p><span id="more-33"></span></p>
<p>You now may think "Wow. And what can I actually do with that?".<br />
MacFUSE itself is less interesting for the end-user but its filesystem implementations are stunning.<br />
Think about your [picasa](http://picasa.google.com)-account (Picasa is Google's online photo album service). Wouldn't it be nice if you could manage your published photos as if they were on your local hard-drive, move them via drag-n-drop, or delete them like normal files? Well, with MacFUSE you can.</p>
<p>Have a look at [Amit's Tech Demo Video](http://video.google.de/videoplay?docid=3138515991250095768) and see what's possible with MacFUSE. It's really great.</p>
<p>But what's really important for me is the sshfs filesystem implementation. Every day I have to connect to several servers via ssh and move files from one machine to another. While this isn't really a problem (thanks to [Transmit](http://www.panic.com/transmit)) it would be more convenient if all those machines were mounted locally on my MacBook.</p>
<p>So, let's install MacFUSE and sshfs and see what happens. Proceed at you own risk. This technology is still under development and I don't know how stable it is.<br />
You can find all the needed files [here](http://code.google.com/p/macfuse/downloads/list).</p>
<p>Let's begin with the MacFUSE-Core kernel extensions.<br />
Download the MacFUSE-Core-0.2.2.dmg, mount it and run the installer. After the installer finished reboot the system so the new kernel extensions are loaded.<br />
To mount remote computers via ssh the sshfs implementation is also needed.<br />
Download the file sshfs-0.1.0.dmg and mount it. You'll see a normal Mac OS X Application called *sshfs*. Copy it to your *Applications*-Folder, run it and a small window will pop up where you have to type in your server address and your user name. A few seconds later another window will pop up where you have to type in your password.<br />
If all worked right a new volume will show up in Finder. Voila.</p>
<p>You can close the *sshfs*-Application if you don't want to connect to additional servers. The mounted Volume won't disappear.<br />
To unmount simply click on the eject button in the Finder.</p>
<p>Wow, that is really easy. <img src='http://www.stiefels.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>For the more experienced users there is also a command-line binary which allows a finer configuration.<br />
The binary is located in the *sshfs.app/Contents/Resources*-Directory and is called *sshfs-static*. If you plan to use it regularly you should link it into */usr/local/bin*:</p>
<p>    $ sudo ln -s /Applications/sshfs.app/Contents/Resources/sshfs-static \<br />
        /usr/local/bin/</p>
<p>To mount a remote server you first have to create a directory which will be an alias to the volume:</p>
<p>    $ mkdir /some/directory</p>
<p>After that you can run sshfs-static with following parameters to mount:</p>
<p>    $ sshfs-static user@remote.server:/remote/directory /some/directory \<br />
        -oreconnect,ping_diskarb,volname=volumename</p>
<p>The *reconnect*-option allows sshfs to reconnect if your network was down.<br />
*ping_diskarb* allows the newly mounted volume to play better with the Finder.<br />
*volname=* can be used to name the new volume.<br />
There are a lot more paramteres. *sshfs-static -h* shows you a list.</p>
<p>To unmount the volume at the command-line use:</p>
<p>    $ umount /some/directory</p>
<p>Really great. A big **thank you** to Amit!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stiefels.net/2007/02/26/mounting-remote-computers-using-macfuse-and-sshfs/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>So Long, and Thanks for All the Fish</title>
		<link>http://www.stiefels.net/2007/02/19/so-long-and-thanks-for-all-the-fish/</link>
		<comments>http://www.stiefels.net/2007/02/19/so-long-and-thanks-for-all-the-fish/#comments</comments>
		<pubDate>Mon, 19 Feb 2007 22:12:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[/etc]]></category>
		<category><![CDATA[Un*x]]></category>

		<guid isPermaLink="false">http://www.stiefels.net/2007/02/19/so-long-and-thanks-for-all-the-fish/</guid>
		<description><![CDATA[After years of bleat-less serving my web pages and emails I had to shut down euklid forever.
His last signs of life:

]]></description>
			<content:encoded><![CDATA[<p>After years of bleat-less serving my web pages and emails I had to shut down euklid forever.<br />
His last signs of life:</p>
<div style="text-align:center;"><img alt="Euklid shutdown" id="image32" src="http://www.stiefels.net/wp-content/uploads/2007/02/euklid_shutdown.png" /></div>
]]></content:encoded>
			<wfw:commentRss>http://www.stiefels.net/2007/02/19/so-long-and-thanks-for-all-the-fish/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C Tutorial &quot;Masters of the Void&quot; Completed</title>
		<link>http://www.stiefels.net/2007/01/18/c-tutorial-masters-of-the-void-completed/</link>
		<comments>http://www.stiefels.net/2007/01/18/c-tutorial-masters-of-the-void-completed/#comments</comments>
		<pubDate>Thu, 18 Jan 2007 17:11:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Un*x]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.stiefels.net/2007/01/18/c-tutorial-masters-of-the-void-completed/</guid>
		<description><![CDATA[If you are looking for a good C tutorial you should definitely have a look at [Uli Kusterer](http://www.zathras.de/angelweb/home.htm)s '[Masters of the Void](http://www.zathras.de/angelweb/masters-of-the-void.htm)'.

Uli completed this tutorial a few days ago and it is a good point for everyone who wants to get started in programming C. While it is aimed at Mac users it is also [...]]]></description>
			<content:encoded><![CDATA[<p>If you are looking for a good C tutorial you should definitely have a look at [Uli Kusterer](http://www.zathras.de/angelweb/home.htm)s '[Masters of the Void](http://www.zathras.de/angelweb/masters-of-the-void.htm)'.</p>
<p><span id="more-27"></span></p>
<p>Uli completed this tutorial a few days ago and it is a good point for everyone who wants to get started in programming C. While it is aimed at Mac users it is also very useful for Linux and Windows users.<br />
And if you are already there you should also take a look at '[How Memory Management Works](http://www.zathras.de/angelweb/howmemorymanagementworks.htm)'.<br />
Thank you, Uli!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stiefels.net/2007/01/18/c-tutorial-masters-of-the-void-completed/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Implementing Greylisting with Exim</title>
		<link>http://www.stiefels.net/2006/12/10/implementing-greylisting-with-exim/</link>
		<comments>http://www.stiefels.net/2006/12/10/implementing-greylisting-with-exim/#comments</comments>
		<pubDate>Sun, 10 Dec 2006 15:03:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Un*x]]></category>
		<category><![CDATA[exim]]></category>
		<category><![CDATA[greylisting]]></category>

		<guid isPermaLink="false">http://www.stiefels.net/2006/12/10/implementing-greylisting-with-exim/</guid>
		<description><![CDATA[Due to the increasing amount of annoying SPAM mails there exist many techniques to reduce that junk.
One very successful approach is called "[Greylisting](http://en.wikipedia.org/wiki/Greylisting)".

The basic idea behind it is to deny an incoming mail with a temporary error code in the first place.
But at the same time the mail server ([MTA](http://en.wikipedia.org/wiki/Mail_transfer_agent)) saves the ip address and [...]]]></description>
			<content:encoded><![CDATA[<p>Due to the increasing amount of annoying SPAM mails there exist many techniques to reduce that junk.<br />
One very successful approach is called "[Greylisting](http://en.wikipedia.org/wiki/Greylisting)".</p>
<p><span id="more-17"></span></p>
<p>The basic idea behind it is to deny an incoming mail with a temporary error code in the first place.<br />
But at the same time the mail server ([MTA](http://en.wikipedia.org/wiki/Mail_transfer_agent)) saves the ip address and sender domain of the incoming mail.</p>
<p>Every ordinary (non-spammmer) mail server will try to resend the deferred mail after some minutes.<br />
This time the mail (and all the following) will be accepted as the MTA knows that this server already tried to deliver this mail.<br />
A spammer often does not try to resend a mail after it was not accepted. The time and resources needed for this would<br />
not be very economic for a spammer.</p>
<p>Unfortunately, there are also some disadvantages:<br />
One mayor tradeoff is that some mails will be delayed a few minutes (dependend of configuration) but this should not be a very big problem for most people.<br />
Another problem are servers which aren't correctly configured and won't try to resend a mail. So the sender gets an error that the mail could not be delivered. Fortunately most servers are set up correctly.</p>
<p>A full design whitepaper of Greylisting can be found [here](http://projects.puremagic.com/greylisting/whitepaper.html).</p>
<p>There are [many implementations](http://www.greylisting.org/implementations/) for most MTAs and also for [Exim](http://www.exim.org) which I use on my server. All you need is a database Exim can use to store its Greylisting information.<br />
A simple implementation with Exim and MySQL can be found [here](http://theinternetco.net/projects/exim/greylist). If you prefer PostgreSQL take a look at this [website](http://raw.no/personal/blog/tech/Debian/2004-03-14-15-55_greylisting).</p>
<p>I reconfigured my Exim installation a few days ago and - yes, email is fun again. <img src='http://www.stiefels.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.stiefels.net/2006/12/10/implementing-greylisting-with-exim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
