<?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>NewPush &#187; Vmailmgr</title> <atom:link href="http://newpush.com/tag/vmailmgr/feed/" rel="self" type="application/rss+xml" /><link>http://newpush.com</link> <description>Server Hosting, Data Warehouse Hosting, Collaboration</description> <lastBuildDate>Mon, 30 Jan 2012 15:40:45 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <item><title>KLUDGE v0.5 EMAIL SERVER &#8211; A DETAILED HOWTO</title><link>http://newpush.com/2010/09/kludge-v0-5-email-server-a-detailed-howto/</link> <comments>http://newpush.com/2010/09/kludge-v0-5-email-server-a-detailed-howto/#comments</comments> <pubDate>Sun, 05 Sep 2010 17:09:03 +0000</pubDate> <dc:creator>Pete</dc:creator> <category><![CDATA[Collaboration]]></category> <category><![CDATA[Dedicated Servers]]></category> <category><![CDATA[Hosting Support]]></category> <category><![CDATA[Linux]]></category> <category><![CDATA[Managed Hosting]]></category> <category><![CDATA[OpenBSD]]></category> <category><![CDATA[ClamAV]]></category> <category><![CDATA[Courier-IMAP]]></category> <category><![CDATA[Mailfront]]></category> <category><![CDATA[Qmail]]></category> <category><![CDATA[qmail-scanner]]></category> <category><![CDATA[Vmailmgr]]></category><guid isPermaLink="false">http://newpush.com/?p=648</guid> <description><![CDATA[This is a reproduction of http://www.jm-associates.com/admin/kludge.html that has gone missing in 2009 KLUDGE v0.5 EMAIL SERVER &#8211; A DETAILED HOWTO AUTHOR - Chris Berry chris_berry@jm-associates.com MAILING LIST &#8211; kludge_list@jm-associates.com To subscribe just send a blank message to kludge_list-subscribe@jm-associates.com TABLE OF &#8230; <a href="http://newpush.com/2010/09/kludge-v0-5-email-server-a-detailed-howto/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h4><span style="color: red;">This is a reproduction of http://www.jm-associates.com/admin/kludge.html that has gone missing in 2009</span></h4><p style="margin-bottom: 0cm;"><span style="font-size: large;"><span style="text-decoration: underline;"><strong>KLUDGE<br /> v0.5 EMAIL SERVER &#8211; A DETAILED HOWTO</strong></span></span></p><p style="margin-bottom: 0cm;"><span style="text-decoration: none;">AUTHOR<br /> - Chris Berry <a href="mailto:chris_berry@jm-associates.com?subject=Kludge%20Email%20Server">chris_berry@jm-associates.com</a></span></p><p>MAILING LIST &#8211; kludge_list@jm-associates.com</p><p>To subscribe just send a blank message to<br /> kludge_list-subscribe@jm-associates.com</p><p style="margin-bottom: 0cm;"><big style="font-weight: bold;">TABLE OF CONTENTS</big></p><p style="margin-bottom: 0cm;"><a href="#Reasoning">Reasoning</a></p><p><a href="#Legal_Disclaimer">Legal Disclaimer</a></p><p><a href="#Special_Thanks">Special Thanks</a></p><p><a href="#Conventions">Conventions</a></p><p><a href="#Components">Components</a></p><p><a href="#Reference_Documents">Reference Documents</a></p><p><a href="#Setup_Stage_0">Setup &#8211; Stage 0</a> , <a href="#Stage_0_a">Hardware</a><br /> , <a href="#Stage_0_b">Operating System</a> , <a href="#Stage_0_c">Basic<br /> Setup</a> , <a href="#Stage_0_d">Download Software</a> , <a href="#Stage_0_e">Security Settings</a></p><p><a href="#Setup_Stage_1">Setup &#8211; Stage 1</a> , <a href="#Stage_1_a">qmail</a></p><p><a href="#Setup_Stage_2">Setup &#8211; Stage 2</a> , <a href="#Stage_2_a">vmailmgr</a><br /> , <a href="#Stage_2_b">Courier-IMAP</a> , <a href="#Stage_2_c">Mozilla</a><br /> , <a href="#Stage_2_d">OpenSSL</a></p><p><a href="#Setup_Stage_3">Setup &#8211; Stage 3</a> , <a href="#Stage_3_a">rblsmtpd</a><br /> , <a href="#Stage_3_b">Spamassassin</a> , <a href="#Stage_3_c">TMDA</a></p><p><a href="#Setup_Stage_4">Setup &#8211; Stage 4</a> , <a href="#Stage_4_a">TMDA-OFMIPD</a><br /> , <span style="text-decoration: underline;"><a href="#Stage_4_b">cdb</a></span><br /> , <a href="#Stage_4_c">Mailfront</a></p><p><a href="#Setup_Stage_5">Setup &#8211; Stage 5</a> , <a href="#Setup_5_a">ClamAV</a><br /> , <a href="#Stage_5_b">qmail-scanner</a></p><p><a href="#Setup_Stage_6">Setup &#8211; Stage 6</a> , <a href="#Stage_6_a">mailquotacheck.sh</a><br /> , <a href="#Stage_6_b">relay-ctrl</a> , <a href="#Stage_6_c">djbdns</a></p><p><a href="#Setup_Stage_7">Setup &#8211; Stage 7</a> ,  <a href="#Stage_7_a">Digital Signatures</a> , <a href="#Stage_7_b">Mailing<br /> Lists</a> , <a href="#Stage_7_c">Admin Scripts</a></p><p><a href="#Stage_8">Setup &#8211; Stage 8</a> , <a href="#Stage_8_a">Ezmlm-idx</a><br /> , <a href="#Stage_8_b">dot-qmail Based Groups</a></p><p><a href="#FAQS">FAQS</a></p><p><a href="#Things_To_Do">Things to do</a></p><p><a href="#Bugs">Reported Bugs</a></p><p><a href="#Changelog">Changelog</a></p><p><a href="#Stage_6_a"></a><span style="text-decoration: none;"> </span><span style="text-decoration: none;"> </span></p><p style="margin-bottom: 0cm;"><strong><span style="font-size: medium;"><a name="Reasoning"></a>REASONING</span></strong></p><div style="text-align: justify;">This project was born when our<br /> business got tired of the inadequacies<br /> of Hotmail and AOL for business email.<br /> I started looking around for a solution, and nobody had all the<br /> features we needed in cost effective form. Given<br /> a low budget (read zero) and demanding reliability requirements, I<br /> turned to open source software. After looking<br /> around I came to the realization that there is no such thing as an open<br /> source &#8220;email server&#8221; as a complete package.<br /> So even though all I knew about email was how to click the send button,<br /> I set out to piece together a total system<br /> from widely available programs. Here are my requirements in order:</p><p>1) Free (as in<br /> beer, though speech is nice too)</p><p>2) Rock solid stability</p><p>3)<br /> Paranoid security</p><p>4) Serious Anti-Spam measures</p><p>5)<br /> Maintainability</p></div><p style="margin-bottom: 0cm;"><big><span style="font-weight: bold;"><a name="Legal_Disclaimer"></a>LEGAL<br /> DISCLAIMER</span></big></p><p>While these instructions work for me, and I hope they&#8217;re helpful for<br /> you, I don&#8217;t guarantee anything.</p><p><br /> <a href="http://creativecommons.org/licenses/by/1.0/"><img src="http://creativecommons.org/images/public/somerights.gif" border="0" alt="Creative Commons License" /></a><br /> This work is licensed under a <a href="http://creativecommons.org/licenses/by/1.0/">Creative Commons<br /> License</a>.<br /> <!--</p><p><rdf:RDF xmlns="http://web.resource.org/cc/"     xmlns:dc="http://purl.org/dc/elements/1.1/"     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><br /> <Work rdf:about=""><br /> <dc:type rdf:resource="http://purl.org/dc/dcmitype/Text" /></p> <license rdf:resource="http://creativecommons.org/licenses/by/1.0/" /> </Work><br /> <License rdf:about="http://creativecommons.org/licenses/by/1.0/"></p> <permits rdf:resource="http://web.resource.org/cc/Reproduction" /> <permits rdf:resource="http://web.resource.org/cc/Distribution" /> <requires rdf:resource="http://web.resource.org/cc/Notice" /><br /> <requires rdf:resource="http://web.resource.org/cc/Attribution" /></p> <permits rdf:resource="http://web.resource.org/cc/DerivativeWorks" /> </License></rdf:RDF></p><p>&#8211;></p><p style="margin-bottom: 0cm;"><big><span style="font-weight: bold;"><a name="Special_Thanks"></a>SPECIAL<br /> THANKS</span></big></p><div style="text-align: justify;">The members of OCLUG for putting up<br /> with a years worth of email related<br /> linux questions.</p><p>The members of the qmail mailing list, bless their cantankerous little<br /> hearts, for steering me in the right direction even when that required<br /> the vicious use of truncheons..</p><p>Tim Legant for his help in getting vmailmgr and tmda working together.</p><p>Charles Cazabon for his help with the local mail only problem.</p><p>The producers of all this wonderful FREE software that makes me look<br /> good for my boss.</p><p>If I used your doc, faq, program, scripts, etc. or you helped out and I<br /> forgot to give you credit, please let me know and I&#8217;ll make sure to<br /> update my page.</p></div><p style="margin-bottom: 0cm;"><big><span style="font-weight: bold;"><a name="Conventions"></a>CONVENTIONS</span></big></p><div style="text-align: justify;">1) Greater than less than symbols<br /> will surround key presses.  So<br /> if you are to press the carriage return it will look like: &lt;enter&gt;</p><p>2) Text to be actually typed will be listed in <span style="color: #ff0000;">red<span style="color: #000000;"><br /> while expected output will be listed in <span style="color: #33cc00;"><span style="color: #009900;">green</span><span style="color: #000000;">.  I know this makes it harder if<br /> you print out the material but it seems like the easiest way to make<br /> it explicitly clear, I can&#8217;t count the number of times when I wasn&#8217;t<br /> sure if I was supposed to enter the quotes or not when reading someone<br /> else&#8217;s docs.</span></span></span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #33cc00;"><span style="color: #000000;">3)<br /> Text that needs to be replaced with something that is specific to<br /> your particular installation will be shown in standard bash variable<br /> format with purple letters like this <span style="color: #993399;">$VARIABLE</span>.</span></span></span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #33cc00;"><span style="color: #000000;">4)<br /> Warnings will be <big>larger</big> and shown in <span style="color: #cc9933;">yellow</span>.</span></span></span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #33cc00;"><span style="color: #000000;">5)<br /> All instructions are to be performed as root unless otherwise<br /> specified.</span></span></span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #33cc00;"><span style="color: #000000;"> </span></span></span></span><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #33cc00;"><span style="color: #000000;">6<br /> )I personally hate vi, but I realize<br /> that it&#8217;s pretty much THE universal<br /> editor for *nix based operating systems.  I used emacs to do most<br /> of my editing on this project, but you can use pretty much whatever you<br /> like.  For the remainder of this HOWTO, I&#8217;m going to assume that<br /> you&#8217;re using emacs, if  you&#8217;re not, then just replace the emacs<br /> commands with whatever is appropriate for your editor.  Here are a<br /> few EMACS tips in case you are a total newbie</span></span></span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #33cc00;"><span style="color: #000000;"><br /> I) To open a file just type <span style="color: #ff0000;">emacs</span><br /> <span style="color: #993399;">$FILENAME</span> replacing<br /> $FILENAME with the name of the file you want to edit or create.<br /> (Remember to include the path if it&#8217;s not in your current directory)</span></span></span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #33cc00;"><span style="color: #000000;"><br /> II) To save the file you&#8217;re working on just hold<br /> down the <span style="color: #ff0000;">CTRL</span> key and<br /> press <span style="color: #ff0000;">&lt;x&gt;</span> <span style="color: #ff0000;">&lt;s&gt;</span></span></span></span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #33cc00;"><span style="color: #000000;"><br /> III) To exit a file just hold down <span style="color: #ff0000;">&lt;CTRL&gt;</span><br /> and press <span style="color: #ff0000;">&lt;x&gt; &lt;c&gt;</span></span></span></span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #33cc00;"><span style="color: #000000;"><br /> IV) To delete an entire line press <span style="color: #ff0000;">&lt;CTRL&gt;<br /> &lt;k&gt;</span></span></span></span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #33cc00;"><span style="color: #000000;"><br /> V) To copy and paste go to the beginning of the<br /> region and hit &lt;CTRL&gt; &lt;SPACE&gt;, use the arrow keys to select<br /> the region, the press &lt;CTRL&gt; &lt;w&gt; to cut or &lt;ALT&gt;<br /> &lt;w&gt; to copy, go to the destination and press &lt;CTRL&gt;<br /> &lt;y&gt; to paste.</span></span></span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #33cc00;"><span style="color: #000000;"> </span></span></span></span></p></div><div style="text-align: justify;"><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #33cc00;"><span style="color: #000000;"><br /> That should be plenty for what you&#8217;re going to do in this project.</p><p>7) I&#8217;ve tried to comply with the file system hierarchy listed here: <a href="http://www.pathname.com/fhs/pub/fhs-2.3.html">http://www.pathname.com/fhs/pub/fhs-2.3.html</a><br /> but I&#8217;m pretty new to Linux so if you find something out of place,<br /> please let me know</p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #33cc00;"><span style="color: #000000;"> </span></span></span></span></p><p></span></span></span></span></div><p style="margin-bottom: 0cm;"><span style="color: #ff0000;"> </span><strong><span style="font-size: medium;"><a name="Components"></a>COMPONENTS</span></strong></p><div style="text-align: justify;"><a href="http://www.mandrakelinux.com/">Mandrake<br /> Linux</a> &#8211; Base operating system</p><p>REASON: I&#8217;ve found that Mandrake is<br /> very easy for new Linux users to install, use, and learn on. If<br /> you&#8217;re reading this that probably includes you.</p><p><a href="http://cr.yp.to/qmail.html">qmail<br /> MTA</a>- Lets you send and recieve mail via SMTP (plus <a href="http://cr.yp.to/daemontools.html">daemontools</a><br /> and <a href="http://cr.yp.to/ucspi-tcp.html">ucspi-tcp</a>)</p><p>REASON: I carefully examined the five<br /> big open source (I use this term loosely as they all have different<br /> licenses) mail transfer<br /> agents(sendmail,exim,courier,qmail, postfix), and qmail seemed to<br /> have the most paranoid security setup.  daemontools and ucspi-tcp<br /> are required<br /> in the standard life with qmail setup that the experts recommend.</p><p><a href="http://www.inter7.com/courierimap/INSTALL.html">Courier-IMAP</a><br /> - Allows remote mail retrieval without need for command line access</p><p>REASON: Natively supports maildirs,<br /> unlike POP it keeps all messages on the server, is faster/less<br /> complicated than both Cyrus-IMAP and UW-IMAP, the author<br /> gives excellent support on his mailing list, and it was originally<br /> designed to work with qmail so there aren&#8217;t any<br /> compatibility problems or sendmailisms.</p><p><a href="http://www.openssl.org/">OpenSSL</a><br /> - Used to encrypt the communications between the mail client and the<br /> IMAP server</p><p>REASON: My policy is to encrypt<br /> everything and ask questions later, clear text transmissions are to<br /> be avoided at all costs, especially when transmitting<br /> passwords. I didn&#8217;t like StartTLS because of the way it&#8217;s<br /> implemented in Courier-IMAP, a compromise in the OpenSSL package would<br /> lead to<br /> root access for an attacker.</p><p><a href="http://www.vmailmgr.org/">Vmailmgr</a><br /> - Removes the need for shell accounts.</p><p>REASON: This server is a mail hub,<br /> there are no &#8220;local&#8221; users in the old Unix sense of the<br /> word. I chose Vmailmgr over Vpopmail because it&#8217;s easy to set<br /> up, more &#8220;qmailish&#8221; in design, and it was highly<br /> recommended by Charles Cazabon, the Technical Reviewer for<br /> &#8220;The qmail Handbook&#8221; one of the few offline books on<br /> qmail.</p><p><a href="http://cr.yp.to/ucspi-tcp/rblsmtpd.html">rblsmtpd</a><br /> - Blocks spammers using DNS lookups</p><p>REASON: Some mail admins are ignorant<br /> and/or malicious allowing all sorts of junk mail to be sent from or<br /> relayed through their systems. After carefully looking<br /> around I decided on three conservative blacklists that seemed both<br /> popular, and very concerned with accuracy. I chose<br /> <em>sbl.spamhaus.org</em> which maintains a list of the worst <span style="text-decoration: underline;">confirmed</span><br /> spammers, <em>relays.ordb.org</em> which tracks servers which are open<br /> relays (though once common, open relaying is no longer recommended<br /> due to abuse), and <span style="font-style: italic;">opm.blitzed.org</span><br /> which tracks servers with misconfigured proxies that allow relaying.<br /> (Originally I had chosen <em>proxies.relays.monkeys.com</em> for the<br /> open proxy blocking but they&#8217;ve been put out of action due to DDoS<br /> attacks.)  Blacklisting is only going to be a small portion of our<br /> anti-spam<br /> setup so I wanted to avoid any sort of aggressive or collateral<br /> damage lists.</p><p><a href="http://useast.spamassassin.org/index.html">Spamassassin</a><br /> - Analyzes email according to a list of human built rules and adds a<br /> score header</p><p>REASON: As any email admin can tell<br /> you, blacklisting hasn&#8217;t been a complete solution for quite a while.<br /> This program looks at email and attempts to quantify<br /> it&#8217;s &#8220;spammyness&#8221;, by combining it with several other spam<br /> identifiers we can try and seperate the good from the<br /> bad.</p><p><a href="http://www.paulgraham.com/spam.html">Bayesian<br /> Filtering</a> &#8211; Uses word frequency statistics to tell spam (bad mail)<br /> from<br /> ham (good mail)</p><p>REASON: This program allows your filters to become more<br /> efficient over time automatically by learning to recognize the<br /> difference between what consitutes good<br /> and bad mail on your system. Having multiple different ways to<br /> recognize spam helps keep down the false positives.</p><p><a href="http://razor.sourceforge.net/">Vipul&#8217;s<br /> Razor</a> &#8211; An online database of known spam emails</p><p>REASON: I<br /> borrowed a concept from NASA and set up my spam identification system<br /> like the flight controllers on the space shuttle. There are three<br /> seperate<br /> filters each with an independant design, this makes the inaccuracies<br /> in any one system tend to cancel out.</p><p><a href="http://tmda.net/">TMDA </a>-<br /> Tagged message deliver agent, a cryptographic message confirmation<br /> system</p><p>REASON: The worst problem with spam<br /> identification systems is false positives/negatives. Usually you<br /> can&#8217;t crank your filters down very tight for fear that you&#8217;ll<br /> reject legitimate mail, and if you loosen them up too much then all<br /> the nasty spam starts ending up in your mailbox again. TMDA can send<br /> out tagged confirmation messages which must be replied to before mail<br /> is delivered. Many users find TMDA by itself to be<br /> annoying as it interjects a new step in the email process. What I&#8217;ve<br /> done is to combine email filtering and TMDA in such a way<br /> that it only triggers on messages which are considered &#8220;spammy&#8221;.<br /> The result is that most users mail goes through without<br /> needing confirmation, yet you can tighten down your filters without<br /> having to worry about false positives since legitimate<br /> senders can just confirm and be whitelisted.</p><p><a href="http://cvs.sf.net/viewcvs.py/tmda/tmda/htdocs/tmda-ofmipd.html?rev=1.10">TMDA-OFMIPD</a><br /> - Part of the TMDA package, this program allows you to use MUA&#8217;s that<br /> don&#8217;t invoke the sendmail wrapper included with qmail.<br /> Specifically we&#8217;ll be using this program to allow us to add dated<br /> reply-to addresses which will allow people we correspond with to bypass<br /> our<br /> spam filters automatically.  This is considered basic net<br /> etiquette when using a challenge/response system.</p><p><a href="http://qmail.hypergrid.it/qmailqueue-patch">qmailqueue-patch</a><br /> - Allows you to have other programs called when qmail-queue is<br /> invoked.</p><p>REASON: Although it&#8217;s a good idea to<br /> use a minimalist approach when it comes to patching qmail, this<br /> seemed like the best way to activate qmail-scanner so<br /> that we can scan for viruses.</p><p><a href="http://qmail-scanner.sourceforge.net/">qmail-scanner.pl</a><br /> - Can be used to block email attachments with certain file<br /> extensions, and as a hook for a virus-scanner</p><p>REASON: I liked Russell Nelson&#8217;s<br /> qmail-viruscan-patch better but unfortuneately my use of mailfront<br /> precludes that because it acts as a replacement for<br /> qmail-smtpd.</p><p><a href="http://www.clamav.net/">Clam-AV</a><br /> - Open source virus scanner with auto-updating</p><p>REASON: This project is supposed to be<br /> completely free (as in beer) so this looked like the best choice.<br /> Although it&#8217;s not going to catch everything, it should go a<br /> long ways towards keeping the virus population down. If you have<br /> Windows clients make sure you&#8217;re running a host based virus<br /> scanner as this won&#8217;t solve all your problems.</p><p><a href="http://untroubled.org/mailfront/smtpfront.html">Mailfront</a><br /> - Used to prevent joe-jobs and reduce queue load from double bounces<br /> to invalid local addresses</p><p>REASON: qmail&#8217;s default behavior is to<br /> accept all mail regardless of whether it&#8217;s for a valid user. While<br /> this is polite, and was an appropriate response when qmail was<br /> written, nowadays this merely allows spammers, worms, and joe-jobbers<br /> to abuse your queue, increasing load on your<br /> server. Mailfront allows you to specify a set of rules which will<br /> prevent unauthorized smtp transactions, and that means you can<br /> use less hardware on your box, which means less money, and we all<br /> know how much managment likes that.</p><p><a href="http://www.pgregg.com/projects/qmail/mailquotacheck/mailquotacheck.php">mailquotacheck.sh</a><br /> - Helps keep your disk usage reasonable by setting a limit on how<br /> much email a user can store</p><p>REASON: Many people tend to use<br /> email as an alternative to FTP nowadays, and that can take up a<br /> prohibitive amount of disk space. This script allows you to<br /> set a limit on how much people can store. I had to modify the script<br /> somewhat to work with vmailmgr and Mandrake but the changes were<br /> pretty minor.</p><p><a href="http://www.mozilla.org/">Mozilla<br /> Email Client</a> &#8211; Cheap, easy, crossplatform mail<br /> reading/sorting/composing</p><p>REASON:<span style="text-decoration: none;"><span><em> In<br /> my personal opinion</em></span> Microsoft Outlook and Outlook express<br /> are poorly written, virus-laden, non-security concious<br /> pieces of bug-ridden filth, and should not be authorized in any<br /> proper mail system. Mozilla&#8217;s email client provides</span> a nice free<br /> replacement that can easily<br /> handle IMAP and the other features we need.</p><p><a href="http://cr.yp.to/cdb.html">cdb</a><br /> - A simple program for creating constant databases</p><p>REASON: This package allows you to take<br /> some longer list files we&#8217;ll be using and compile them into simple<br /> databases to improve lookup performance.</p><p><a href="http://www.untroubled.org/relay-ctrl/">Relay-Ctrl</a> &#8211; Allows<br /> remote users to relay outgoing smtp through the server so that you can<br /> support road warriors</p><p>REASON:   I like this particular solution because it&#8217;s<br /> limited, temporary, and doesn&#8217;t require patching qmail, in addition<br /> we&#8217;re already using a bunch of Bruce Guenter&#8217;s software so it keeps the<br /> number of different places to go for support down.</p><p><a href="http://www.flounder.net/%7Emrsam/maildrop/">Maildrop</a> &#8211; A<br /> mail delivery agent.</p><p>REASON: Basically this is a complete filtering language that allows you<br /> all kinds of custom solutions.  I like the way it works but<br /> currently the only thing we&#8217;re going to be using it for is to<br /> implement the qmail-scanner.pl script which requires maildrop&#8217;s<br /> reformime package.</p><p><a href="http://budney.homeunix.net:8080/users/budney/linux/software/safecat.html">Safecat</a><br /> - A safe maildir delivery program</p><p>REASON: We&#8217;re not using a full fledged MDA, and TMDA  won&#8217;t be<br /> used for our mailing list setup.  This program works great right<br /> out of the box.</p><p><a href="http://cr.yp.to/djbdns.html">djbdns</a> &#8211; A security concious<br /> DNS server, written by the same author as qmail so it&#8217;s little suprise<br /> that they work well together.</p><p>REASON &#8211; qmail is pretty strict about what kind of DNS replies it<br /> recieves.  Some sites nowadays will return a dns response that&#8217;s<br /> greater than 512 bytes which is technically not allowed in the<br /> RFC.  When this happens qmail gives a CNAME error in the log and<br /> won&#8217;t process the message.  To work around this, the best solution<br /> is to install a caching dns resolver like djbdns which understands and<br /> can properly handle those kinds of oversized messages.</p><p><a href="http://www.ezmlm.org/">ezmlm-idx</a> (OPTIONAL) &#8211; A mailing<br /> list manager written by the auther of qmail, with some extensions added<br /> by various mailing list admins</p><p>REASON &#8211; There are many situations where it can be convenient to run<br /> your own mailing list.  This program offers a secure, low<br /> maintenance, no-nonsense way of doing that.</p></div><p style="margin-bottom: 0cm;"><big><span style="font-weight: bold;"><a name="Reference_Documents"></a>REFERENCE<br /> DOCUMENTS &amp; INFORMATION<br /> SOURCES</span></big></p><p>This is most of the stuff I used to help figure out how to do this<br /> project:</p><p><a href="http://linitx.org/forum/viewtopic.php?t=234">OS Installation<br /> problem workaround</a></p><p><a href="http://www.lifewithqmail.org/lwq.html">Life With<br /> Qmail</a></p><p><a href="http://www.amazon.com/exec/obidos/ASIN/1893115402/davesill/102-2016413-6434522">The<br /> qmail<br /> Handbook</a></p><p><a href="http://www.untroubled.org/vmailmgr/docs/HOWTO.html">Vmailmgr<br /> HOWTO</a></p><p><a href="http://www.inter7.com/courierimap/INSTALL.html">Courier-IMAP<br /> Instructions</a></p><p><a href="http://www.gallowglass.org/">OpenSSL Howto</a></p><p><a href="http://cr.yp.to/ucspi-tcp/rblsmtpd.html">rblsmtpd Explanation</a></p><p><a href="http://www.tmda.net/tmda-vdomains.html">TMDA Virtual Domains<br /> Howto</a></p><p><a href="http://qmail-scanner.sourceforge.net/">qmail-scanner.pl<br /> Installation page</a></p><p><a href="http://qmail-scanner.sourceforge.net/perlscanner.php">Perlscanner<br /> file blocking info</a></p><p><a href="http://www.lifewithqmail.org/lwq.html#environment-variables">qmail<br /> environment variables</a></p><p><a href="http://cr.yp.to/cdb/install.html">How to Install cdb</a></p><p><a href="http://tmda.net/faq.cgi?req=all">The TMDA FAQ</a></p><p><a href="http://msgs.securepoint.com/cgi-bin/get/qmail0308/167.html">Local<br /> Mail Only Solution</a></p><p><a href="http://untroubled.org/mailfront/">Mailfront directions</a></p><p><a href="http://razor.sourceforge.net/docs/install.php">Razor Directions</a></p><p><a href="http://untroubled.org/relay-ctrl">Relay-Ctrl Directions</a></p><p><a href="http://megaz.arbuz.com/?p=qmail_howto">Nasim Mansurov&#8217;s qmail<br /> Howto</a></p><p><a href="http://clamav.elektrapro.com/doc/clamdoc.pdf">The Clam-AV user<br /> manual</a></p><p><a href="http://support.microsoft.com/default.aspx?kbid=291369">Microsoft&#8217;s<br /> list of unsafe file extensions</a></p><p>I&#8217;m sure I forgot a few things, but if I remember, I&#8217;ll be sure to add<br /> them to the list.</p><p style="margin-bottom: 0cm;"><big><span style="font-weight: bold;"><a name="Setup_Stage_0"></a>SETUP<br /> - STAGE 0</span></big></p><p><span style="font-style: italic;"><big><a name="Stage_0_a"></a>PART A:<br /> Hardware</big></span></p><hr style="width: 100%; height: 2px;" /><div style="text-align: justify;">This will vary widely on your<br /> available resources, budget, and<br /> projected email volume.  For small to medium sized organizations<br /> pretty much any second string workstation should be able to handle the<br /> job.</p><p>Here are the specs for my email server:</p><p>Matsonic MS7308E Motherboard</p><p>Intel Celeron 600Mhz CPU</p><p>512MB PC133 SDRAM</p><p>Western Digital 120GB 7200RPM Hard Drive  (SCSI<br /> drives would be WAY better but I&#8217;m on a tight budget)</p><p>SiS 630 PCI Graphic Adapter</p><p>Intel Ethernet Pro 100 Network Card</p><p>Trinitron 17&#8243; Monitor</p><p>Keytronic 104 Keyboard</p><p>Logitech two button mouse</p><p>Generic 52x CD-ROM (must be El Torrito compliant)</p><p>Sony 1.44MB Floppy Drive</p><p>ATX Mid Tower Case w/300W Power supply</p><p>As you can see, it&#8217;s not exactly a blazing inferno of speed, but for<br /> the purpose it&#8217;s going to be used for that&#8217;s plenty.  I highly<br /> recommend Arctic Silver III thermal grease as opposed to thermal tape<br /> or paste for your cpu cooler heat transfer material.  You should<br /> make sure that your system has been blown out with an air can<br /> and that all connections are firm before getting started.</p></div><p style="margin-bottom: 0cm;"><big><span style="font-style: italic;"><a name="Stage_0_b"></a>PART<br /> B: Operating System</span></big></p><hr style="width: 100%; height: 2px;" />1) Go to the Mandrake website and<br /> download the Mandrake 9.2 ISOs from a<br /> neaby mirror.</p><p>2) Burn ISOs onto CDR, I used Nero on my win2kpro workstation, but<br /> whatever works for you should be fine.  (If you&#8217;re going to be<br /> running things remotely from a windows box the way I am, I highly<br /> recommend using Putty as your SSH client)</p><p>3) Make sure your hard drive is wiped clean by using fdisk and format</p><p>4) Insert the first CD into your email server and boot using the CD<br /> (you may have to change your BIOS settings to accomplish this)</p><p>5) Follow the setup instructions</p><p>Choose English(American)</p><p>Agree to the license</p><p>Configure your mouse</p><p>Choose High Security (paranoid is too restrictive<br /> unless you really know what you&#8217;re doing)</p><p>Set the security admin to $TEST_USER@$DOMAIN</p><p>Use free space partitioning</p><p>Select the following package groups:</p><p>Office Workstation</p><p>Internet Station</p><p>Network Computer Client</p><p>Configuration</p><p>Console Tools</p><p>Development</p><p>Documentation</p><p>LSB</p><p>Network Computer Server</p><p>KDE Workstation</p><p><big style="color: #cc9933;">This is not the minimalist way<br /> to do this but all the<br /> interdependencies were driving me nuts at first, make sure to remove<br /> unneeded software as part of your lockdown procedure.</big></p><p><big style="color: #cc9933;"> </big><br /> <big><span style="font-style: italic;"> </span></big></p><p>Select yes to agree to selected servers</p><p>Swap the cd&#8217;s when requested</p><p>Enter a root password</p><p>Create a regular user with su priveledge</p><p>Set the hardware clock to GMT</p><p>Choose your NTP server, I liked ntp.nasa.gov  <big><span style="color: #cc9933;">Make sure to open port 123 on your<br /> firewall</span></big></p><p>Choose not to run updates at this time</p><p>Reboot when instructed to do so</p><p style="margin-bottom: 0cm;"><big><span style="font-style: italic;"><a name="Stage_0_c"></a>PART<br /> C: Basic Setup</span></big></p><hr style="width: 100%; height: 2px;" />1) Adjust the run level</p><p>Boot into standard linux kernel</p><p>Log in as root at the KDE prompt</p><p>Open a terminal</p><p><span style="color: #ff0000;">emacs /etc/inittab</span></p><p>Change the runlevel to 3</p><p><span style="color: #ff0000;">&lt;CTRL&gt; &lt;x&gt; &lt;s&gt;</span></p><p><span style="color: #ff0000;">&lt;CTRL&gt; &lt;x&gt; &lt;c&gt;</span></p><p>Reboot by typing <span style="color: #ff0000;">shutdown -r now</span><br style="color: #ff0000;" /></p><p>2) Some basic configuration</p><p>Log in as your test user</p><p><span style="color: #ff0000;">su -</span></p><p>enter root password</p><p><span style="color: #ff0000;">updatedb</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">emacs /etc/hosts</span><br style="color: #ff0000;" /><br /> make an entry for your machine, using tabs between the ip address and<br /> the host name</p><p><span style="color: #ff0000;">&lt;CTRL&gt; &lt;x&gt; &lt;s&gt;</span></p><p><span style="color: #ff0000;">&lt;CTRL&gt; &lt;x&gt; &lt;c&gt;</span></p><p><span style="color: #ff0000;">drakconnect</span><br style="color: #ff0000;" /><br /> fill in all of your network info</p><p><span style="color: #ff0000;">shutdown -r now</span></p><p>Boot into the linux-secure kernel</p><p>3) Add an A and MX record to your DNS server</p><p>4) Setup the remote control software</p><p><span style="color: #ff0000;">ln -s /etc/init.d/sshd<br /> /etc/rc.d/rc3.d/S32sshd</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">ln -s /etc/init.d/sshd<br /> /etc/rc.d/rc5.d/S32sshd</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">/etc/rc.d/init.d/sshd start</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">emacs /etc/hosts.allow</span><br style="color: #ff0000;" /><br /> Add this line</p><p><span style="color: #ff0000;">sshd : ALL : ALLOW</span></p><p><span style="color: #ff0000;">&lt;CTRL&gt; &lt;x&gt; &lt;s&gt;</span></p><p><span style="color: #ff0000;">&lt;CTRL&gt; &lt;x&gt; &lt;c&gt;</span></p><p><span style="color: #ff0000;"> </span>Set up putty or ssh on your<br /> workstation, and move there for the rest of this document.</p><p>5) Edit the standard user profile</p><p><span style="color: #ff0000;">emacs /etc/profile</span></p><p>After this line</p><p>HISTSIZE=1000</p><p>Add these two</p><p><span style="color: #ff0000;">EDITOR=/usr/bin/emacs</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">PS1=&#8221;[\u@\h \w]$ &#8220;</span></p><p>And change your export lines to look like this</p><p><span style="color: #ff0000;">export PATH PS1 USER LOGNAME MAIL<br /> HOSTNAME INPUTRC NLSPATH</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">export HISTCONTROL HISTSIZE EDITOR</span></p><p><span style="color: #ff0000;">&lt;CTRL&gt; &lt;x&gt; &lt;s&gt;</span></p><p><span style="color: #ff0000;">&lt;CTRL&gt; &lt;x&gt; &lt;c&gt;</span></p><p><span style="color: #ff0000;"> </span></p><p>6) Setup urpmi</p><p>Make sure you have a default gateway pointing towards your<br /> firewall/proxy/router internet connection.</p><p>If not, add it like this <span style="color: #ff0000;">route<br /> add default gw</span> <span style="color: #993399;">$IP_ADDRESS</span></p><p>urpmi.removemedia -a</p><p>Go here <a href="http://plf.zarb.org/%7Enanardon/urpmiweb.php">http://plf.zarb.org/~nanardon/urpmiweb.php</a><br /> and get custom urpmi setup instructions, then implement them.<br /> (main and security sources only)</p><p><span style="color: #ff0000;">urpmi.update<br /> -a</span></p><p><span style="color: #ff0000;">urpmi<br /> &#8211;auto-select</span></p><p style="margin-bottom: 0cm;">7) Create new directories to hold our<br /> config scripts</p><p style="margin-bottom: 0cm;"><span style="color: #ff0000;"> </span><span style="color: #ff0000;">mkdir /usr/local/src/kludge-scripts</span></p><p>mkdir /etc/kludge</p><p> <img src="http://newpush.com/wp-includes/images/smilies/icon_cool.gif?9d7bd4" alt='8)' class='wp-smiley' /> Make sure that /etc/ntp.conf  and /etc/ntp/step-tickers contain<br /> ntp.nasa.gov (or whatever your choice was)</p><p style="margin-bottom: 0cm;"><span style="color: #ff0000;">cat<br /> /etc/ntp.conf</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">cat /etc/ntp/step-tickers</span></p><p><span style="color: #ff0000;"> </span></p><p style="margin-bottom: 0cm;"><big><span style="font-style: italic;"><a name="Stage_0_d"></a>PART<br /> D: Download the software</span></big></p><hr style="width: 100%; height: 2px;" />Make sure to put all of this<br /> software in /usr/local/src</p><p>I used wget for most of this, basically just go into the /usr/local/src<br /> directory and type wget and the address of the package you&#8217;re trying to<br /> download.</p><p><a href="http://www.qmail.org/netqmail-1.05.tar.gz">http://www.qmail.org/netqmail-1.05.tar.gz</a><br /> - qmail releases are pretty slow so I&#8217;d be very surprised if 1.05 isn&#8217;t<br /> the newest when you read this</p><p><a href="ftp://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz">ftp://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz</a></p><p><a href="ftp://cr.yp.to/daemontools/daemontools-0.76.tar.gz">ftp://cr.yp.to/daemontools/daemontools-0.76.tar.gz</a></p><p><a href="http://www.courier-mta.org/download.php#imap">Courier-IMAP<br /> tar.bz</a><br /> - I used 2.2.1</p><p><span style="color: #ff0000;"> </span><a href="http://www.vmailmgr.org/current/">Vmailmgr RPM</a> &#8211; I used<br /> 0.096.9-2</p><p><a href="http://www.vmailmgr.org/current/">Vmailmgr-Courier-IMAP RPM</a><br /> - I used 0.96.9-2</p><p>rblsmtpd comes with qmail you don&#8217;t need to download anything</p><p><a href="http://www.mirror.ac.uk/sites/spamassassin.taint.org/spamassassin.org/released/RPMs/">SpamAssassin<br /> src RPM</a> &#8211; I used 2.61-1</p><p>The SpamBayes module comes with SpamAssassin, you don&#8217;t need to<br /> download anything</p><p><a href="http://razor.sourceforge.net/download/">Vipul&#8217;s Razor tar.gz</a><br /> - I<br /> used sdk 2.03 and agents 2.36</p><p><a href="http://tmda.net/download.html">TMDA tgz</a> &#8211; I used 1.0</p><p>tmda-ofmipd &#8211; Already included in the main TMDA package.</p><p><a href="http://qmail-scanner.sourceforge.net/">qmail-scanner tgz</a> -<br /> I<br /> used 1.20</p><p><a href="http://rpmfind.net/linux/rpm2html/search.php?query=tnef">TNEF<br /> unpacker RPM</a> &#8211; I used 1.2.1-1mdk</p><p><a href="http://sourceforge.net/project/showfiles.php?group_id=86638">Clam-AV<br /> tar.gz</a><br /> - I used 0.65</p><p><a href="http://www.untroubled.org/mailfront/">Mailfront src RPM</a> -<br /> I used<br /> 0.88-1</p><p><a href="http://www.mozilla.org/">Mozilla Email Client</a> &#8211; I used 1.5<br /> (you need this on the client machine, not the server)</p><p><a href="http://cr.yp.to/cdb/cdb-0.75.tar.gz">cdb tar.gz</a> &#8211; I used<br /> 0.75</p><p><a href="./downloads/cdb-0.75.errno.patch">cdb errno<br /> patch</a></p><p><a href="http://www.untroubled.org/relay-ctrl/">relay-ctrl src RPM</a><br /> - I used<br /> 3.1.1-1</p><p><a href="http://www.courier-mta.org/download.php#maildrop">Maildrop RPM</a><br /> - I used 1.6.1-1mdk</p><p><span style="color: #ff0000;">wget<br /> http://www.jm-associates.com/admin/downloads/kludge-scripts-<span style="color: #993399;">$VERSION</span>.tar.gz<br /> </span>The version number is the same as the howto document<span style="color: #ff0000;"> </span></p><p>wget</p><p>http://lifewithqmail.org/inst_check</p><p><a href="http://www.untroubled.org/bglibs/">bglibs src RPM</a> &#8211; I used<br /> 1.011-1</p><p><a href="http://www.untroubled.org/cvm-vmailmgr/">cvm-vmailmgr src RPM</a><br /> - I used 0.18-1</p><p><span style="color: #ff0000;">wget</p><p>http://budney.homeunix.net:8080/users/budney/linux/software/safecat/safecat-1.11.tar.gz</span></p><p><a href="http://cr.yp.to/djbdns/djbdns-1.05.tar.gz">djbdns tar.gz</a> -<br /> I used 1.05</p><p><a href="http://moni.csi.hu/pub/glibc-2.3.1/djbdns-1.05.errno.patch">djbdns<br /> errno patch</a></p><p>You can check the kludge-scripts tarball using md5</p><p><span style="color: #ff0000;">md5sum<br /> /usr/local/src/kludge-scripts-0.5.tar.gz</span></p><p><span style="color: #009900;">c27a278ff653eac478302384088cbeaf<br /> kludge-scripts-0.5.tar.gz</span></p><p><big><span style="font-style: italic;"><a name="Stage_0_e"></a>PART E:<br /> Modify the security<br /> settings</span><br style="font-style: italic;" /><br /> </big></p><hr style="width: 100%; height: 2px; font-style: italic;" />1) Copy<br /> level.local and reset</p><p><span style="color: #ff0000;">cp<br /> /usr/local/src/kludge-scripts/level.local /etc/security/msec</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">msec 4</span><br style="color: #ff0000;" /></p><p>Here is a copy of my <a href="./kludge-scripts/level.local.txt">level.local</a></p><p>THIS IS THE END OF STAGE 0, YOU&#8217;RE READY TO START</p><p><big><span style="font-weight: bold;"><a name="Setup_Stage_1"></a>SETUP<br /> - STAGE 1</span></big></p><p><big style="font-style: italic;"><a name="Stage_1_a"></a>PART A:<br /> Install qmail</big></p><hr style="width: 100%; height: 2px;" />We&#8217;re going to do a modified <a href="http://www.lwq.org/">LWQ</a>/qmail<br /> handbook install, changing as little as possible so that we can get<br /> help from the qmail mailing list.  Due to the unique license on<br /> qmail, we&#8217;re going to install<br /> from source code rather than use an unauthorized rpm.</p><p><span style="color: #ff0000;"><span style="color: #000000;">1) Stops postfix</span></span></p><p><span style="color: #ff0000;">/etc/init.d/postfix stop</span><br style="color: #ff0000;" /></p><p>2) Removes postfix</p><p><span style="color: #ff0000;">rpm -ev &#8211;nodeps <span style="color: #993399;">$POSTFIX_VERSION</span></span><br style="color: #ff0000;" /></p><p>3) Test to make sure we have a compiler</p><p><span style="color: #ff0000;">gcc</span></p><p><span style="color: #009900;">gcc:no input files</span></p><p><span style="color: #ff0000;"> </span><span style="color: #ff0000;"><span style="color: #000000;"> </span></span></p><p>4)Ensure files and directories are publicly accessable by default</p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;">umask<br /> 022</span><br style="color: #ff0000;" /><br /> </span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;">5) Extract tarballs</span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;">cd<br /> /usr/local/src</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">tar -xvzf netqmail-1.05.tar.gz</span></span></span></p><p>cd netqmail-1.05</p><p>./collate.sh</p><p>cd ..</p><p><span style="color: #ff0000;">tar -xvzf<br /> ucspi-tcp-0.88.tar.gz</span></p><p>mkdir /package</p><p>chmod 1755 /package</p><p><span style="color: #ff0000;">tar -xvz -C /package -f<br /> daemontools-0.76.tar.gz</span></p><p><span style="color: #ff0000;">tar -xvz -C<br /> /usr/local/src/kludge-scripts -f<br /> kludge-scripts-<span style="color: #993399;">$VERSION</span>.tar.gz</span><br style="color: #ff0000;" /></p><p><span style="color: #ff0000;"><span style="color: #000000;">6) Creating the qmail directory</span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;">mkdir<br /> /var/qmail</span><br style="color: #ff0000;" /><br /> </span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;">7) Adding the necessary users and groups</span></span><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;"> </span></span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;">chmod 700<br /> /usr/local/src/kludge-scripts/gu_setup.sh</span><br style="color: #ff0000;" /><br /> </span>/usr/local/src/kludge-scripts/gu_setup.sh</span></p><p><span style="color: #ff0000;"><span style="color: #000000;">Here is a copy of my <a href="./kludge-scripts/gu_setup.sh.txt">gu_setup.sh</a></span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;"> <img src="http://newpush.com/wp-includes/images/smilies/icon_cool.gif?9d7bd4" alt='8)' class='wp-smiley' /> Verify that users were properly added</span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;">tail<br /> -n 7 /etc/passwd</span></span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;">9) Build qmail</span></span></p><p><span style="color: #ff0000;">cd<br /> /usr/local/src/netqmail-1.05/netqmail-1.05</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">make setup check</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">./config</span><br style="color: #ff0000;" /></p><p>10) Build ucspi-tcp</p><p><span style="color: #ff0000;">cd /usr/local/src/ucspi-tcp-0.88</span></p><p>patch &lt;<br /> /usr/local/src/netqmail-1.05/other-patches/ucspi-tcp-0.88.errno.patch<br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">make</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">make setup check</span><br style="color: #ff0000;" /></p><p>11) Fix and build daemontools</p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;">cd /package/admin/daemontools-0.76/src</span><br style="color: #ff0000;" /><br /> </span></span><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;">perl<br /> -p -i -e<br /> &#8216;s/&lt;sys\/time.h&gt;/&lt;time.h&gt;/&#8217; tai64nlocal.c</span></span></span></p><p>patch<br /> &lt;<br /> /usr/local/src/netqmail-1.05/other-patches/daemontools-0.76.errno.patch</p><p>cd ..</p><p>package/install</p><p><span style="color: #ff0000;">chmod 700 /service</span><br style="color: #ff0000;" /></p><p>12) Test<br /> to make sure svscan is running</p><p><span style="color: #ff0000;">ps -ef | grep svscan<br /> </span></p><p><span style="color: #009900; font-family: andale mono;">root<br /> 1038     1  0  2003<br /> ?        00:00:00 /bin/sh<br /> /command/svscanboot</span><br style="color: #009900; font-family: andale mono;" /><br /> <span style="color: #009900; font-family: andale mono;">root<br /> 1040  1038  0  2003<br /> ?        00:04:55 svscan /service</span><br style="color: #009900; font-family: andale mono;" /><br /> <span style="color: #009900; font-family: andale mono;">root<br /> 12388 10907  0 13:08 pts/0    00:00:00 grep svscan</span><br style="color: #009900;" /><br /> <span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;"> </span></span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;"> </span>13) Puts a copy of rc<br /> startup script<br /> where it needs to be</span></span></p><p><span style="color: #ff0000;">cp<br /> /usr/local/src/kludge-scripts/var-qmail-rc /var/qmail/rc</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">chmod 755 /var/qmail/rc</span></p><p>You can see a copy here <a href="./kludge-scripts/var-qmail-rc.txt">var-qmail-rc</a><span style="color: #ff0000;"><span style="color: #000000;"> </span></span></p><p><span style="color: #ff0000;"> </span></p><p><span style="color: #ff0000;"><span style="color: #000000;">14) Sets up qmail to deliver to Maildirs</span></span></p><p><span style="color: #ff0000;">echo ./Maildir/ &gt;<br /> /var/qmail/control/defaultdelivery</span><br style="color: #ff0000;" /></p><p>15) Puts the qmailctl script where it needs to be, and sets the<br /> permissions</p><p><span style="color: #ff0000;">cp<br /> /usr/local/src/kludge-scripts/qmailctl<br /> /var/qmail/bin</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">chmod 755 /var/qmail/bin/qmailctl</span></p><p>ln -s /var/qmail/bin/qmailctl /usr/bin<br style="color: #ff0000;" /></p><p>You can see a copy here <a href="./kludge-scripts/qmailctl.txt">qmailctl</a></p><p><span style="color: #ff0000;"><span style="color: #000000;"> </span></span></p><p>16) Creates logging directories</p><p><span style="color: #ff0000;">mkdir -p<br /> /var/qmail/supervise/qmail-send/log</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">mkdir -p<br /> /var/qmail/supervise/qmail-smtpd/log</span></p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;"><span style="color: #ff0000;">mkdir -p<br /> /var/qmail/supervise/qmail-smtpd2/log</span></span></span></span></p><p>In most corporate environments<br /> only a select subset of employees are allowed to email outside of the<br /> organization, rather than have two servers, we&#8217;ve going to setup a<br /> second smtpd for the restriced users so that they can only send emails<br /> locally.</p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;"> </span></span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;"> </span></span></span><span style="color: #ff0000;"><span style="color: #000000;"> </span></span><span style="color: #ff0000;"><span style="color: #000000;">17)<br /> Copies the run files to where we need them and make them executable</span></span></p><p><span style="color: #ff0000;">cd /usr/local/src/kludge-scripts</span></p><p>chmod 755 run_setup.sh</p><p>./run_setup.sh</p><p>You can see a copy here <a href="./kludge-scripts/run_setup.sh.txt">run_setup.sh</a></p><p>You can see a copy here<span style="color: #ff0000;"><span style="color: #000000;"> <a href="./kludge-scripts/qmail-send-run.txt">qmail-send-run</a></span></span></p><p>You can see a<br /> copy here <a href="./kludge-scripts/qmail-send-log-run.txt">qmail-send-log-run</a><span style="color: #ff0000;"><span style="color: #000000;"> </span></span></p><p>You can see a<br /> copy here <a href="./kludge-scripts/qmail-smtpd-run-stage1.txt">qmail-smtpd-run-stage1</a></p><p><span style="color: #ff0000;"><span style="color: #000000;">You can see a copy here <a href="./kludge-scripts/qmail-smtpd-log-run.txt">qmail-smtpd-log-run</a></span></span></p><p>You can see a copy here<span style="color: #ff0000;"> <a href="./kludge-scripts/qmail-smtpd2-run.txt">qmail-smtpd2-run</a></span></p><p>You<br /> can see a copy here <span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;"><span style="color: #ff0000;"><a href="./kludge-scripts/qmail-smtpd2-log-run.txt">qmail-smtpd2-log-run</a></span></span></span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;"> 18) Creates the incoming control file</span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;">cd<br /> /var/qmail/control</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">echo 20 &gt;<br /> /var/qmail/control/concurrencyincoming</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">chmod 644<br /> /var/qmail/control/concurrencyincoming</span><br style="color: #ff0000;" /></span></span></p><p>19) Modify the locals and rcpthosts files</p><p><span style="color: #ff0000;">echo <span style="color: #993399;">$DOMAIN_NAME</span> &gt;&gt;<br /> /var/qmail/control/locals</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">echo <span style="color: #993399;">$DOMAIN_NAME</span> &gt;&gt;<br /> /var/qmail/control/rcpthosts</span></p><p><span style="color: #ff0000;"><span style="color: #000000;"> </span></span><span style="color: #ff0000;"><span style="color: #000000;"> </span></span></p><p>20) Set up the logging directories</p><p><span style="color: #ff0000;">mkdir -p /var/log/qmail/smtpd</span></p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;"><span style="color: #ff0000;">mkdir /var/log/qmail/smtpd2</span><br style="color: #ff0000;" /><br /> </span></span></span><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;">chown -R qmaill /var/log/qmail</span><br style="color: #ff0000;" /></span></span></p><p>21) Link the services into /service</p><p><span style="color: #ff0000;">ln -s<br /> /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd </span><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;"><span style="color: #ff0000;">/var/qmail/supervise/qmail-smtpd2</span></span></span></span><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;"><br /> /service</span></span></span></p><p><span style="color: #ff0000;">qmailctl stop</span></p><p><span style="color: #ff0000;"><span style="color: #000000;"> 22) Allow local host relay</span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;">cd<br /> /etc</span></span></span></p><p><span style="color: #ff0000;">echo<br /> &#8217;127.:allow,RELAYCLIENT=&#8221;"&#8216;<br /> &gt; /etc/tcp.smtp</span></p><p>echo &#8216;<span style="color: #993399;">$YOUR_SUBNET</span>.:allow,RELAYCLIENT=&#8221;"<br /> &gt;&gt; /etc/tcp.smtp</p><p>Where $YOUR_SUBNET is the address space you&#8217;re<br /> going to allow to relay from your LAN, for me that&#8217;s 192.168.</p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;"> </span></span></span></p><p>echo<br /> &#8217;127.:allow,RELAYCLIENT=&#8221;",<br /> &gt; /etc/tcp2.smtp</p><p><span style="color: #ff0000;"><span style="color: #000000;"> </span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;">qmailctl<br /> cdb</span><br style="color: #ff0000;" /><br /> </span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #009900;">Reloaded<br /> /etc/tcp.smtp.</span><br style="color: #009900;" /><br /> <span style="color: #009900;">Reloaded /etc/tcp2.smtp.</span></span></span></p><p>23) Create required aliases</p><p><span style="color: #ff0000;"><span style="color: #000000;">Replace $FQDN with your domain name</span></span></p><p><span style="color: #ff0000;">echo \&amp;<span style="color: #993399;">$TEST_USER</span>@<span style="color: #993399;">$FQDN</span> &gt;<br /> /var/qmail/alias/.qmail-postmaster</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;">ln<br /> -s .qmail-postmaster /var/qmail/alias/.qmail-root</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">ln -s .qmail-postmaster<br /> /var/qmail/alias/.qmail-mailer-daemon</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">chmod 644<br /> /var/qmail/alias/.qmail-postmaster</span><br style="color: #ff0000;" /></span></span></p><p>24) Creating sendmail replacements</p><p><span style="color: #ff0000;">ln -s /var/qmail/bin/sendmail<br /> /usr/lib</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">ln -s /var/qmail/bin/sendmail<br /> /usr/sbin</span><br style="color: #ff0000;" /></p><p><span style="color: #ff0000;"><span style="color: #000000;">25) Set the greeting</span></span></p><p style="color: #ff0000;">echo &#8216;mail.<span style="color: #993399;">$DOMAIN</span>.com &#8211;No Unsolicited<br /> Bulk Email&#8211;&#8217; &gt; /var/qmail/control/smtpgreeting</p><p><span style="color: #ff0000;"><span style="color: #000000;">26) Check out your installation</span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;">cd<br /> /usr/local/src</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">chmod 700 inst_check</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">./inst_check</span></span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;">27) Starts qmail</span></span></p><p><span style="color: #ff0000;">qmailctl start</span></p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;"><span style="color: #000000;">28) Call your ISP and tell them to set up<br /> an MX record for mail.$FQDN (replace $FQDN with your domain name) with<br /> the IP address of your email server (or firewall forwarding<br /> address).  They generally will not do this until you have<br /> something listening on port 25.</span></span></span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;"><span style="color: #000000;">29) Setup a test mailbox</span></span></span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;">su -<br /> <span style="color: #993399;">$TEST_USER</span></span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">cd ~</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">/var/qmail/bin/maildirmake Maildir</span></span></span></span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;"><span style="color: #000000;">29) Send a test message to and fro.</span></span></span></span></p><p style="color: #ff0000;">telnet 127.0.0.1 25</p><p>helo dude</p><p>mail from:&lt;<span style="color: #993399;">$TEST_USER</span>@<span style="color: #993399;">$DOMAIN_NAME</span>&gt;</p><p>rcpt to:&lt;<span style="color: #993399;">$MY_FREE_ACCOUNT</span>@hotmail.com&gt;</p><p>data</p><p>Subject: Testing</p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;">This<br /> is a test</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">.</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">quit</span></span></span></span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;"><span style="color: #000000;">Now login to your hotmail account and<br /> check your mail, then send a reply.</span></span></span></span></p><p style="color: #ff0000;">cd /home/<span style="color: #993399;">$TEST_USER</span>/Maildir/new</p><p>ls</p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;"><span style="color: #000000;">There should be an email here, use the<br /> cat command to read it.</span></span></span></span></p><p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;"><span style="color: #000000;">THIS IS THE END OF STAGE 1, THE SMTP<br /> SERVICE IS RUNNING</span></span></span></span></p><p><big><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;"><span style="color: #000000;"><span style="font-weight: bold;"><a name="Setup_Stage_2"></a>THE<br /> BASICS &#8211; STAGE 2</span></span></span></span></span></big></p><p><big> </big></p><p style="font-style: italic;"><big><a name="Stage_2_a"></a>PART A:<br /> Setup Vmailmgr</big></p><hr style="width: 100%; height: 2px;" />Ok, now we&#8217;re going to set things<br /> up so that our email users won&#8217;t need local or shell accounts,<br /> everything will be remote as a good mail hub should be.</p><p>1) Install Vmailmgr</p><p><span style="color: #ff0000;">cd /usr/local/src</span></p><p><span style="color: #000000;">Replace $VERSION with the version<br /> numbers for your package</span><br style="color: #000000;" /><br /> <span style="color: #ff0000;">urpmi vmailmgr-</span><span style="color: #993399;">$VMAILMGR_VERSION</span><span style="color: #ff0000;">.i386.rpm</span></p><p>2) Setup the group, user, and directory</p><p><span style="color: #ff0000;">groupadd virtual</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">md /home/virtual</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">chgrp virtual /home/virtual</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">useradd -g virtual -d<br /> /home/virtual vmail -s /bin/bash</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">chown vmail /home/virtual</span><br style="color: #ff0000;" /><br /> Replace $VMAIL_PASSWORD with your vmail password</p><p><span style="color: #ff0000;">passwd vmail</span> <span style="color: #993399;">$VMAIL_PASSWORD</span></p><p><span style="color: #ff0000;">su &#8211; vmail</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">/usr/bin/vsetup</span><br style="color: #ff0000;" /><br /> Replace $TEST_USER_PASSWORD with your test user password</p><p><span style="color: #ff0000;">vadduser <span style="color: #993399;">$TEST_USER</span></span> <span style="color: #993399;">$TEST_USER_PASSWORD</span></p><p>Enter password<span style="color: #ff0000;"> </span></p><p>exit<br style="color: #ff0000;" /></p><p>3) Reconfigure qmail</p><p>Replace $FQDN with your domain name</p><p><span style="color: #ff0000;">echo</span> <span style="color: #993399;">$FQDN</span><span style="color: #ff0000;">:vmail &gt;<br /> /var/qmail/control/virtualdomains</span></p><p>echo <span style="color: #993399;">$HOST_NAME</span>:vmail<br /> &gt;&gt; /var/qmail/control/virtualdomains</p><p>Make sure to use the full host name.</p><p>This allows CRON to email you.<span style="color: #ff0000;"> </span></p><p>Double check /var/qmail/control/locals, nothing can be in there<br /> except<br /> localhost (Remove host and fqdn)</p><p><span style="color: #ff0000;">qmailctl restart</span><br style="color: #ff0000;" /></p><p>4) Send yourself a test message from the free hotmail account.</p><p>5) Setup .qmail files<br /> (postmaster, root, mailer-daemon, abuse)</p><p><span style="color: #ff0000;">cd /home/virtual</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">echo<br /> \&amp;<span style="color: #993399;">$TEST_USER</span>@<span style="color: #993399;">$DOMAIN</span> &gt; .qmail-postmaster</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">echo<br /> \&amp;</span><span style="color: #993399;">$TEST_USER</span><span style="color: #ff0000;">@</span><span style="color: #ff0000;"><span style="color: #ff0000;"><span style="color: #993399;">$DOMAIN</span></span></span><span style="color: #ff0000;"> &gt; .qmail-root</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">echo<br /> \&amp;<span style="color: #993399;">$TEST_USER</span>@</span><span style="color: #ff0000;"><span style="color: #ff0000;"><span style="color: #993399;">$DOMAIN</span></span></span><span style="color: #ff0000;"> &gt; .qmail-mailer-daemon</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">echo<br /> \&amp;</span><span style="color: #993399;">$TEST_USER</span><span style="color: #ff0000;">@</span><span style="color: #ff0000;"><span style="color: #ff0000;"><span style="color: #993399;">$DOMAIN</span></span></span><span style="color: #ff0000;"> &gt; .qmail-abuse</span><br style="color: #ff0000;" /></p><p><big><span style="font-style: italic;"><a name="Stage_2_b"></a>PART B:<br /> Setup Courier-IMAP</span><br style="font-style: italic;" /><br /> </big></p><hr style="width: 100%; height: 2px;" />My users have a number of<br /> requirements including roaming and shared folders that mean they need<br /> to keep messages on the server rather than downloading them so IMAP was<br /> an obvious choice over POP.</p><p>1) Install dependencies</p><p><span style="color: #ff0000;">urpmi libgdbm2-devel</span><br style="color: #ff0000;" /></p><p>If you get a warning message like the line below, ignore it as it won&#8217;t<br /> affect the mail server.</p><p><span style="color: #009900;">install-info: warning: no info dir<br /> entry in &#8216;/usr/share/info/gdbm.info.bz2&#8242;</span><br style="color: #009900;" /></p><p>If you know how to fix this please email me as I&#8217;d like to know, just<br /> for completeness.</p><p>2) Create a special user and group to run ClamAV so that our perm.local<br /> won&#8217;t spit out error messages</p><p><span style="color: #ff0000;">groupadd clamav</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">useradd -g clamav -s /bin/false -c<br /> &#8220;Clam AntiVirus&#8221; clamav</span></p><p>3) Unpack the source code</p><p><span style="color: #ff0000;">cd /usr/local/src</span></p><p><br style="color: #ff0000;" /><br /> <big style="color: #cc9933;">The courier package<br /> cannot be unpacked and built by root, you <span style="text-decoration: underline;">must</span> be a regular user.</big></p><p><span style="color: #ff0000;"> </span></p><p>useradd courier -d /home/courier<br style="color: #ff0000;" /><br /> <span style="color: #ff0000;"><span style="color: #ff0000;">chown root.adm /usr/local/src</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">emacs /etc/group</span></span><br /> Add courier to the adm and rpm group<span style="color: #ff0000;"> </span></p><p>A group with no users looks like this:</p><p>adm:x:4:</p><p>A group with one user looks like this:</p><p>adm:x:4:courier</p><p>A group with two users looks like this:</p><p>adm:x:4:courier,ldap</p><p><span style="color: #ff0000;"> </span></p><p>cp /usr/local/src/kludge-scripts/perm.local<br /> /etc/security/msec</p><p><span style="color: #ff0000;">msec 4</span></p><p>su &#8211; courier</p><p>mkdir /home/courier/rpm</p><p>mkdir /home/courier/rpm/SOURCES</p><p>mkdir /home/courier/rpm/SPECS</p><p>mkdir /home/courier/rpm/BUILD</p><p>mkdir /home/courier/rpm/SRPMS</p><p>mkdir /home/courier/rpm/RPMS</p><p>mkdir /home/courier/rpm/RPMS/i386</p><p>echo &#8220;%_topdir    /home/courier/rpm&#8221; &gt;&gt;<br /> /home/courier/.rpmmacros<br style="color: #ff0000;" /><br /> Replace $IMAP_VERSION with the version numbers for your package</p><p><span style="color: #ff0000;">rpm -ta courier-imap-<span style="color: #993399;">$IMAP_VERSION</span>.tar.bz2</span></p><p><span style="color: #ff0000;">cd /home/courier/RPM/RPMS/i586</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">urpmi courier-imap-<span style="color: #993399;">$VERSION</span>.mdk.i586.rpm</span><br style="color: #ff0000;" /></p><p>4) Edit<br /> /usr/lib/courier-imap/etc/imapd</p><p><span style="color: #ff0000;">cd /usr/lib/courier-imap</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">emacs /etc/imapd</span><br style="color: #ff0000;" /><br /> Change the listening address to the IP address of your machine</p><p>Change MAXPERIP to 20</p><p>Change authmodules to &#8220;authvmailmgr&#8221;</p><p><span style="color: #ff0000;">&lt;CTRL&gt; &lt;x&gt; &lt;s&gt;</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">&lt;CTRL&gt; &lt;x&gt; &lt;c&gt;</span><br style="color: #ff0000;" /></p><p>Here is a copy of my <a href="./kludge-scripts/imapd.txt">imapd</a></p><p>5) Start IMAP</p><p><span style="color: #ff0000;">/usr/lib/courier-imap/lib/imapd.rc<br /> start</span><br style="color: #ff0000;" /></p><p>6) Create some links so that courier will start automatically upon boot</p><p><span style="color: #ff0000;">cd /usr/local/src/kludge-scripts</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">./courier_links.sh</span><br style="color: #ff0000;" /></p><p>Here is a copy of my <a href="./kludge-scripts/courier_links.sh.txt">courier_links.sh</a></p><p>7) Setup the virtual IMAP authentication</p><p>Replace $VMAILMGR_IMAP_VERSION with the version numbers for your package</p><p><span style="color: #ff0000;">urpmi<br /> /usr/local/src/vmailmgr-courier-imap-</span><span style="color: #993399;">$VMAILMGR_IMAP_VERSION</span><span style="color: #ff0000;">.i386.rpm</span></p><p> <img src="http://newpush.com/wp-includes/images/smilies/icon_cool.gif?9d7bd4" alt='8)' class='wp-smiley' /> Install vmailmgr-courier-imap, and create the symlink</p><p><span style="color: #ff0000;">cd /usr/local/src</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">rpm &#8211;ivh vmailmgr-courier-imap-<span style="color: #993399;">$VERSION</span>.i368.rpm</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">ln -s<br /> /usr/lib/courier-imap/libexec/authlib/authvmailmgr<br /> /usr/lib/courier-imap/lib/authlib/authvmailmgr</span></p><p><big style="font-style: italic;"><a name="Stage_2_c"></a>PART C:<br /> Setting up the mail client<br /> (Mozilla)</big></p><hr style="width: 100%; height: 2px;" />This section will detail how to<br /> configure the Mozilla email client to work with the email server.<br /> I&#8217;m assuming that your MUA install will be on a seperate machine, and<br /> that you can handle that part yourself.</p><p>You can download a file with pictures of my FINAL settings in<br /> openoffice.org format here <a href="./Downloads/mozilla_settings.sxw">Mozilla<br /> Settings Pics</a> (I also now set Compact folders when it will<br /> save over 1000kb in edit preferences/mail and newsgroups/offline and<br /> disk space)</p><p>1) Create an Account</p><p>Open Mozilla Mail and Newsgroups</p><p>Click add account</p><p>Select email account</p><p>Enter your name</p><p><span style="color: #993399;">$FULL_NAME</span></p><p>Enter your new email eddress</p><p><span style="color: #993399;">$EMAIL_ADDRESS</span></p><p>Select IMAP</p><p>Enter the DNS name of the incoming mail server</p><p><span style="color: #993399;">$HOSTNAME</span></p><p>Enter the user name</p><p><span style="color: #993399;">$USER_NAME</span></p><p>Enter an account name</p><p><span style="color: #993399;">$ACCOUNT_NAME</span></p><p>2) Server Settings</p><p>Enter Port <span style="color: #ff0000;">143</span></p><p>Check Check for new messages on startup</p><p>Check Check for new messages every <span style="color: #ff0000;">5</span><br /> Minutes</p><p>Click Advanced</p><p>Check Show only subscribed folders</p><p>Check Server supports folders that contain sub-folders and messages</p><p>Maximum number of server connections to cache = <span style="color: #ff0000;">5</span></p><p>Personal Namespace = <span style="color: #ff0000;">&#8220;INBOX.&#8221;</span><br /> <big style="color: #cc9933;">There is a dot there, don&#8217;t<br /> forget it!</big></p><p>Public (shared) = <span style="color: #ff0000;">&#8220;shared.&#8221;</span><br /> <big style="color: #cc9933;">There is a dot there, don&#8217;t<br /> forget it!</big></p><p>Check allow server to override these namespaces</p><p>3) Outgoing Server SMTP</p><p>Enter DNS server name</p><p>$HOSTNAME</p><p>Port = <span style="color: #ff0000;">25</span></p><p>Check Use name and password</p><p>User name = <span style="color: #993399;">$USERNAME</span><span style="color: #ff0000;">@</span><span style="color: #993399;">$DOMAIN</span></p><p>4) Send a test email to and from your free web account</p><p><big><span style="font-style: italic;"><a name="Stage_2_d"></a>PART D:<br /> Install OpenSSL and<br /> configure Courier-IMAP to use an encrypted channel</span></big></p><hr style="width: 100%; height: 2px;" />Ok, now we&#8217;re going to make sure<br /> that the bad guys can&#8217;t listen in when we&#8217;re reading our email or<br /> transmitting our passwords.</p><p>1) Install the necessary package (sometimes I think I&#8217;m going to start<br /> seeing packages in my sleep)</p><p><span style="color: #ff0000;">urpmi mod_ssl</span> Make sure<br /> you pick mod_perl if given some options</p><p>2) Create a local certificate authority</p><p><span style="color: #ff0000;">mkdir /etc/kludge/crypt</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">cd /etc/kludge/crypt</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">openssl genrsa -des3 -out ca.key<br /> 2048</span></p><p><span style="color: #009900;">Generating RSA private key, 2048<br /> bit long modulus</span><br style="color: #009900;" /><br /> <span style="color: #009900;">&#8230;..+++</span><br style="color: #009900;" /><br /> <span style="color: #009900;">&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.+++</span><br style="color: #009900;" /><br /> <span style="color: #009900;">e is 65537 (0&#215;10001)</span><br style="color: #009900;" /><br /> <span style="color: #009900;">Enter PEM pass phrase: enter a<br /> password here</span><br style="color: #009900;" /><br /> <span style="color: #009900;">Verifying password &#8211; Enter PEM<br /> pass phrase: re-enter your password here</span><br style="color: #33cc00;" /></p><p>As you can see above it&#8217;s going to ask you for a PEM pass phrase, I<br /> recommend using<br /> an <a href="http://www.multicians.org/thvv/gpw.html">MTR-3006</a><br /> password or something else equally random. (ok, for those crypto<br /> purists out there, I&#8217;m aware that this isn&#8217;t TRULY random, but it&#8217;s a<br /> heck of alot better than using something like &#8220;password&#8221;)</p><p>Then you&#8217;ll have re-enter your pass phrase</p><p>This will create a 2048 bit RSA key stored in ca.key</p><p>3) Create a self-signed CA Certificate</p><p><span style="color: #ff0000;">openssl req -new -x509 -days 3652<br /> -key ca.key -out ca.crt</span></p><p><span style="color: #009900;">Using configuration from<br /> /usr/lib/ssl/openssl.cnf</span><br style="color: #009900;" /><br /> <span style="color: #009900;">Enter PEM pass phrase: <span style="color: #993399;">$KEY_PASSWORD</span></span><br style="color: #993399;" /><br /> <span style="color: #009900;">You are about to be asked to enter<br /> information that will be incorporated</span><br style="color: #009900;" /><br /> <span style="color: #009900;">into your certificate request.</span><br style="color: #009900;" /><br /> <span style="color: #009900;">What you are about to enter is<br /> what is called a Distinguished Name or a DN.</span><br style="color: #009900;" /><br /> <span style="color: #009900;">There are quite a few fields but<br /> you can leave some blank</span><br style="color: #009900;" /><br /> <span style="color: #009900;">For some fields there will be a<br /> default value,</span><br style="color: #009900;" /><br /> <span style="color: #009900;">If you enter &#8216;.&#8217;, the field will<br /> be left blank.</span><br style="color: #009900;" /><br /> <span style="color: #009900;">&#8212;&#8211;</span><br style="color: #009900;" /><br /> <span style="color: #009900;">Country Name (2 letter code) [AU]:<span style="color: #993399;"> $COUNTRY</span></span><br style="color: #009900;" /><br /> <span style="color: #009900;">State or Province Name (full name)<br /> [Some-State]: <span style="color: #993399;">$STATE</span></span><br style="color: #009900;" /><br /> <span style="color: #009900;">Locality Name (eg, city) []: <span style="color: #993399;">$CITY</span></span><br style="color: #009900;" /><br /> <span style="color: #009900;">Organization Name (eg, company)<br /> [Internet Widgits Pty Ltd]:<span style="color: #993399;"><br /> $COMPANY</span></span><br style="color: #009900;" /><br /> <span style="color: #009900;">Organizational Unit Name (eg,<br /> section) []: <span style="color: #993399;">$DEPARTMENT</span></span><br style="color: #009900;" /><br /> <span style="color: #009900;">Common Name (eg, YOUR name) []: <span style="color: #993399;">$TITLE</span></span><br style="color: #993399;" /><br /> <span style="color: #009900;">Email Address []: <span style="color: #993399;">$EMAIL</span></span></p><p>Replace $KEY_PASSWORD with your PEM password chosen in the previous step</p><p>Replace $COUNTRY with the two letter code for the country you live in</p><p>Replace $STATE with the state you live in</p><p>Replace $CITY with the name of the city you live in</p><p>Replace $COMPANY with the name of the company or organization you&#8217;re<br /> working for</p><p>Replace $DEPARTMENT with the name your department</p><p>Replace $TITLE with your job title</p><p>Replace $EMAIL with your current email address</p><p>This will create a self-signed certificate called ca.crt valid for 10<br /> years.</p><p>4) Create a certificate request for the IMAP server</p><p><span style="color: #ff0000;">openssl genrsa -out imapd.key 2048</span></p><p>This will create a 2048 bit RSA key that doesn&#8217;t require you to enter<br /> the password when the imapd-ssl server starts</p><p>5) Generate a Certificate Signing Request (CSR)</p><p><span style="color: #ff0000;">openssl req -new -key imapd.key<br /> -out imapd.csr</span></p><p><span style="color: #009900;">Using configuration from<br /> /usr/lib/ssl/openssl.cnf</span><br style="color: #009900;" /><br /> <span style="color: #009900;">You are about to be asked to enter<br /> information that will be incorporated</span><br style="color: #009900;" /><br /> <span style="color: #009900;">into your certificate request.</span><br style="color: #009900;" /><br /> <span style="color: #009900;">What you are about to enter is<br /> what is called a Distinguished Name or a DN.</span><br style="color: #009900;" /><br /> <span style="color: #009900;">There are quite a few fields but<br /> you can leave some blank</span><br style="color: #009900;" /><br /> <span style="color: #009900;">For some fields there will be a<br /> default value,</span><br style="color: #009900;" /><br /> <span style="color: #009900;">If you enter &#8216;.&#8217;, the field will<br /> be left blank.</span><br style="color: #009900;" /><br /> <span style="color: #009900;">&#8212;&#8211;</span><br style="color: #009900;" /><br /> <span style="color: #009900;">Country Name (2 letter code) [AU]:<br /> <span style="color: #993399;">$COUNTRY</span></span><br style="color: #009900;" /><br /> <span style="color: #009900;">State or Province Name (full name)<br /> [Some-State]: <span style="color: #993399;">$STATE</span></span><br style="color: #009900;" /><br /> <span style="color: #009900;">Locality Name (eg, city) []: $CITY</span><br style="color: #009900;" /><br /> <span style="color: #009900;">Organization Name (eg, company)<br /> [Internet Widgits Pty Ltd]: <span style="color: #993399;">$COMPANY</span></span><br style="color: #009900;" /><br /> <span style="color: #009900;">Organizational Unit Name (eg,<br /> section) []: <span style="color: #ff0000;">Email</span></span><br style="color: #009900;" /><br /> <span style="color: #009900;">Common Name (eg, YOUR name) []: <span style="color: #993399;">$SERVER_NAME</span></span><br style="color: #009900;" /><br /> <span style="color: #009900;">Email Address []: <span style="color: #993399;">$EMAIL</span></span><br style="color: #009900;" /><br /> <br style="color: #009900;" /><br /> <span style="color: #009900;">Please enter the following &#8216;extra&#8217;<br /> attributes</span><br style="color: #009900;" /><br /> <span style="color: #009900;">to be sent with your certificate<br /> request</span><br style="color: #009900;" /><br /> <span style="color: #009900;">A challenge password []:</span><br style="color: #009900;" /><br /> <span style="color: #009900;">An optional company name []:</span><br style="color: #009900;" /></p><p><big><span style="color: #cc9933;">Organizational unit name<br /> of base and server certs CANNOT match!</span></big></p><p><big> </big></p><p>Replace $COUNTRY with the two letter code for the country you live in</p><p>Replace $STATE with the state you live in</p><p>Replace $CITY with the name of the city you live in</p><p>Replace $COMPANY with the name of the company or organization you&#8217;re<br /> working for</p><p>Replace $SERVER_NAME with the host name of your server</p><p>Replace $EMAIL with your current email address</p><p>Leave challenge password and optional company name blank</p><p>6) Sign the certificate with the CA certificate</p><p><span style="color: #ff0000;">/usr/lib/ssl/mod_ssl/sign.sh<br /> imapd.csr</span></p><p>This should print out a bunch of info that matches what you entered<br /> earlier, then at the end:</p><p><span style="color: #009900;">Sign the certificate? [y/n]: </span><span style="color: #ff0000;">y</span></p><p><span style="color: #009900;">1 out of 1 certificate requests<br /> certified, commit? [y/n]: <span style="color: #ff0000;">y</span></span><br style="color: #009900;" /><br /> <span style="color: #009900;">Write out database with 1 new<br /> entries</span><br style="color: #009900;" /><br /> <span style="color: #009900;">Data Base Updated</span><br style="color: #009900;" /><br /> <span style="color: #009900;">CA verifying: imapd.crt &lt;-&gt;<br /> CA cert</span><br style="color: #009900;" /><br /> <span style="color: #009900;">imapd.crt: OK</span></p><p><span style="color: #000000;"> </span></p><p>7) Create the PEM file</p><p>The sign.sh script includes a human-readable description of the key, we<br /> want to delete those lines in imapd.crt and have this:</p><p><span style="color: #009900;">&#8212;&#8211;BEGIN CERTIFICATE&#8212;&#8211;</span><br style="color: #009900;" /><br /> <span style="color: #009900;">MIIDtzCCAp8CAQEwDQYJKoZIhvcNAQEEBQAwgY4xCzAJBgNVBAYTAlVTMRUwEwYD</span><br style="color: #009900;" /><br /> <span style="color: #009900;">VQQIEwxQZW5uc3lsdmFuaWExEDAOBgNVBAcTB0hvcnNoYW0xGTAXBgNVBAoTEFdl</span><br style="color: #009900;" /><br /> <span style="color: #009900;">.</span><br style="color: #009900;" /><br /> <span style="color: #009900;">.</span><br style="color: #009900;" /><br /> <span style="color: #009900;">.</span><br style="color: #009900;" /><br /> <span style="color: #009900;">BBL3CLqzb6ZMHSm+6eVr2RrsaePChPhb+/1PCgvJESqVEoR4RO5RHywiyg==</span><br style="color: #009900;" /><br /> <span style="color: #009900;">&#8212;&#8211;END CERTIFICATE&#8212;&#8211;</span><br style="color: #009900;" /></p><p>The dots are just to show continuance.</p><p><br style="color: #009900;" /><br /> <span style="color: #ff0000;">emacs imapd.crt</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">&lt;CTRL&gt; &lt;k&gt;</span><br /> Repeat as many times as necessary (I did it this way because its easier<br /> than trying to explain how to set the mark, *nix text editors are from<br /> the stone age and are a bit cryptic to say the least)</p><p>Combine the key and crt files</p><p><span style="color: #ff0000;">cat imapd.key imapd.crt &gt;<br /> imapd.pem</span><br style="color: #ff0000;" /></p><p>Add the Diffie-Hellman code-block that Courier-IMAP wants</p><p><span style="color: #ff0000;">openssl gendh &gt;&gt; imapd.pem</span><br style="color: #ff0000;" /></p><p><span style="color: #009900;">Generating DH parameters, 512 bit<br /> long safe prime, generator 2</span><br style="color: #009900;" /><br /> <span style="color: #009900;">This is going to take a long time</span><br style="color: #009900;" /><br /> <span style="color: #009900;">&#8230;&#8230;&#8230;.+&#8230;&#8230;&#8230;&#8230;.++*++*++*++*++*++*</span><br style="color: #009900;" /></p><p>Copy the imapd.pem file into the default cerificate directory for<br /> Courier-IMAP and make sure that it&#8217;s not group or world readable.</p><p><span style="color: #ff0000;">cp imapd.pem<br /> /usr/lib/courier-imap/share</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">chmod 0600<br /> /usr/lib/courier-imap/share/imapd.pem</span><br style="color: #ff0000;" /></p><p><big style="color: #cc9933;">The time on your<br /> server/workstation MUST match to within 5 minutes!</big></p><p> <img src="http://newpush.com/wp-includes/images/smilies/icon_cool.gif?9d7bd4" alt='8)' class='wp-smiley' /> Edit the imapd-ssl file</p><p><span style="color: #ff0000;">cd /usr/lib/courier-imap/etc</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">emacs imapd-ssl</span></p><p>Set <span style="color: #ff0000;">SSLADDRESS=</span><span style="color: #993399;">$IP_ADDRESS</span> to the IP of your<br /> server&#8217;s NIC</p><p>Set <span style="color: #993399;"><span style="color: #ff0000;">IMAPDSSLSTART=YES</span><br style="color: #ff0000;" /><br /> <span style="color: #000000;">Set</span> <span style="color: #ff0000;">IMAPDSTARTTLS=NO</span><br style="color: #ff0000;" /><br /> <span style="color: #000000;"><span style="color: #ff0000;">CTRL<br /> &lt;x&gt; &lt;s&gt;</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">CTRL &lt;x&gt; &lt;c&gt;</span><br style="color: #ff0000;" /></span></span></p><p>Here is a copy of my <a href="./kludge-scripts/imapd-ssl.txt">imapd-ssl</a></p><p>9) Restart imapd-ssl</p><p><span style="color: #ff0000;">/usr/lib/courier-imap/lib/imapd-ssl.rc<br /> stop</span><br style="color: #ff0000;" /><br /> <span style="color: #009900;"><span style="color: #000000;"><span style="color: #993399;"><span style="color: #000000;"><span style="color: #ff0000;">/usr/lib/courier-imap/lib/imapd-ssl.rc<br /> start</span><br style="color: #ff0000;" /></span></span></span></span></p><p>10) Test from another machine with openssl</p><p><span style="color: #ff0000;">openssl s_client -connect </span><span style="color: #993399;">$IP_ADDRESS</span><span style="color: #ff0000;">:993</span> Cygwin can help you<br /> do this from a windows box if necessary</p><p><span style="color: #009900;"><span style="color: #000000;"><span style="color: #993399;"><span style="color: #000000;"> </span></span></span></span></p><p>Replace $IP_ADDRESS with the IP of your server&#8217;s NIC</p><p>You should get a standard IMAP login</p><p><span style="color: #009900;"><span style="color: #000000;"><span style="color: #993399;"><span style="color: #000000;">11) Change your mozilla account server<br /> settings</span></span></span></span></p><p>Enter Port <span style="color: #ff0000;">993</span> instead of<br /> 143</p><p>Check Use secure connection (SSL)</p><p><span style="color: #009900;"><span style="color: #000000;"><span style="color: #993399;"><span style="color: #000000;"> </span></span></span></span></p><p>12) Send a test message to and from your free webmail account</p><p><span style="color: #009900;"><span style="color: #000000;"><span style="color: #993399;"><span style="color: #000000;">END STAGE 2, YOU NOW HAVE A BASIC EMAIL<br /> SERVER</span></span></span></span></p><p><big style="font-weight: bold;"><a name="Setup_Stage_3"></a>SPAM TRIAGE<br /> - STAGE 3</big></p><p><big style="font-weight: bold;"> </big></p><p><span style="color: #009900;"><span style="color: #000000;"><span style="color: #993399;"><span style="color: #000000;"> </span></span></span></span></p><p><big><span style="font-style: italic;"><a name="Stage_3_a"></a>PART A:<br /> Setting up our very own<br /> black hole (RBLSMTPD)</span></big></p><hr style="width: 100%; height: 2px;" /><span style="color: #009900;"><span style="color: #000000;"><span style="color: #993399;"><span style="color: #000000;">One<br /> of the earliest spam fighting methods still in use today is the<br /> realtime-blackhole-list or RBL.  Basically this a dns server which<br /> tracks the IP addresses of known spammers or spam friendly<br /> networks.  What we&#8217;re going to do is set it so that the smtpd run<br /> script will check with some reasonable RBLs to determine if the people<br /> trying to send us mail are the bad guys, and if they are, just like<br /> we&#8217;d do with a<br /> telemarketer, we&#8217;re going to refuse to talk to them.</span></span></span></span></p><p>1) Basically all you have to do to get qmail to use RBLs is to enter a<br /> few lines in your smptd run script that look like this:</p><p>/usr/local/bin/rblsmtpd \</p><p>-r sbl.spamhaus.org \</p><p>-r relays.ordb.org \</p><p>-r opm.blitzed.org \</p><p>You would enter this as part of your tcpserver invocation, however this<br /> has already been done for you if you downloaded the scripts tarball<br /> earlier, just copy it into the correct location.</p><p><span style="color: #ff0000;">qmailctl stop</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">cp<br /> /usr/local/src/kludge-scripts/qmail-smtpd-run-stage3<br /> /var/qmail/supervise/qmail-smtpd/run</span></p><p>Choose to overwrite when prompted</p><p><span style="color: #ff0000;">qmailctl start</span></p><p>Here is a copy of my script <a href="./kludge-scripts/qmail-smtpd-run-stage3.txt">qmail-smtpd-run-stage3</a></p><p><big><span style="font-style: italic;"><a name="Stage_3_b"></a>PART B:<br /> Installing the Ninja<br /> (SPAMASSASSIN)</span></big></p><hr style="width: 100%; height: 2px;" /><span style="color: #009900;"><span style="color: #000000;"><span style="color: #993399;"><span style="color: #000000;">An<br /> integral part of our spam fighting system is content filtering.<br /> Spamassassin is a set of rules which attempts to score mail&#8217;s<br /> &#8220;spammyness&#8221; so that you can decide which mail is legitimate and which<br /> isn&#8217;t semi-automatically.</p><p>1) Perform a perl update on an important package</p><p><span style="color: #ff0000;">perl -MCPAN -e &#8216;install<br /> MIME::QuotedPrint&#8217;</span></p><p>If you want to test for the existence of a perl package on your system<br /> type the following:</p><p><span style="color: #ff0000;">perl -M<span style="color: #993399;">$MODULE_NAME</span> -e1</span></p><p>If you don&#8217;t get an error message, you have the module.</p><p>2) Build the source RPMs (replace $SPAMASSASSIN_VERSION with the<br /> version numbers for<br /> your rpms)</p><p><span style="color: #ff0000;">cd /usr/local/src</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">rpm &#8211;rebuild  spamassassin-<span style="color: #993399;">$SPAMASSASSIN_VERSION</span>.src.rpm</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">cd /usr/src/RPM/RPMS/i586</span></p><p>rpm -ivh perl-Mail-SpamAssassin-<span style="color: #993399;">$SPAMASSASSIN_VERSION</span>.i586.rpm<br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">rpm -ivh spamassassin-<span style="color: #993399;">$SPAMASSASSIN_VERSION</span>.i586.rpm</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">rpm -ivh spamassassin-tools-<span style="color: #993399;">$SPAMASSASSIN_VERSION</span>.i586.rpm</span><span style="color: #ff0000;"> </span></p><p><br style="color: #000000;" /><br /> <span style="color: #000000;">3) Setup /etc/sysconfig/spamassassin</span></p><p><span style="color: #ff0000;">echo &#8216;SPAMDOPTIONS=&#8221;-d -c -a -m5<br /> -H -x -u vmail&#8221;&#8216; &gt; /etc/sysconfig/spamassassin</span><br style="color: #ff0000;" /></p><p>4) Set up the initialization script<br /> and start spamassassin<br style="color: #000000;" /></p><p>cd /etc/rc.d/init.d</p><p>./spamassassin start</p><p>3) Change settings in /etc/mail/spamassassin/local.cf then restart<br /> /etc/rc.d/init.d/spamassassin</p><p><big><span style="color: #cc9933;">Spamassassin must ignore<br /> messages recieved from localhost!</span></big></p><p>Here is a copy of my file <a href="./kludge-scripts/spamassassin-local.cf.txt">spamassassin-local.cf</a></p><p>4) Setting up the Vipul&#8217;s razor module</p><p><span style="color: #ff0000;">cd /usr/local/src</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">tar -xvzf  razor-agents-<span style="color: #993399;">$RAZOR_VERSION</span>.tar.gz</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">tar -xvzf razor-agents-sdk-<span style="color: #993399;">$RAZOR_VERSION</span>.tar.gz</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">cd razor-agents-sdk-<span style="color: #993399;">$RAZOR_VERSION</span></span></p><p>Replace $Version with the version numbers of your tarballs.</p><p><span style="color: #ff0000;">perl Makefile.PL</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">make</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">make test</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">make install</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">cd ..</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">cd razor-agents*</span></p><p><span style="color: #ff0000;">perl Makefile.PL</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">make</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">make test</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">make install</span></p><p><span style="color: #ff0000;">cd ../razor-agents-$VERSION/bin</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">./razor-client</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">su vmail</span></p><p>./razor-admin<br /> -home=/home/virtual/.razor -create<br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">./razor-admin -register<br /> -user=$USER<br /> -pass=$PASSWORD</span><br style="color: #ff0000;" /></p><p><big><span style="color: #cc9933;">If you get error 202<br /> ignore and<br /> resubmit.</span></big></p><p><span style="color: #ff0000;">exit</span></p><p><span style="color: #009900;"><span style="color: #000000;"><span style="color: #993399;"><span style="color: #000000;"><span style="color: #ff0000;"><span style="color: #009900;"><span style="color: #000000;"><span style="color: #993399;"><span style="color: #000000;"><span style="color: #ff0000;">cd<br /> /usr/lib/perl5/site_perl/5.8.1/i386-linux-thread-multi/Razor2</span></span></span></span></span></span></span></span></span></span></p><p><span style="color: #009900;"><span style="color: #000000;"><span style="color: #993399;"><span style="color: #000000;"><span style="color: #ff0000;">cp<br /> /usr/share/doc/spamassassin-2.61/Razor2.patch .</span></span></span></span></span></p><p>patch -p0 &lt; Razor2.patch</p><p><span style="color: #009900;">patching file Client/Agent.pm</span><br style="color: #009900;" /><br /> <span style="color: #009900;">Hunk #1 succeeded at 981 (offset<br /> 12 lines).</span><br style="color: #009900;" /><br /> <span style="color: #009900;">patching file Client/Config.pm</span><br style="color: #009900;" /><br /> <span style="color: #009900;">Hunk #1 succeeded at 333 (offset<br /> 10 lines).</span><br style="color: #009900;" /><br /> <span style="color: #009900;">Hunk #2 succeeded at 378 (offset<br /> 10 lines).</span><br style="color: #009900;" /><br /> <span style="color: #009900;">patching file Client/Core.pm</span><br style="color: #009900;" /><br /> <span style="color: #009900;">Hunk #1 succeeded at 218 (offset 2<br /> lines).</span><br style="color: #33cc00;" /></p><p>cd /usr/local/src/razor-agents-2.36/lib/Razor2</p><p><span style="color: #009900;"><span style="color: #000000;"><span style="color: #993399;"><span style="color: #000000;"><span style="color: #ff0000;"><span style="color: #009900;"><span style="color: #000000;"><span style="color: #993399;"><span style="color: #000000;"><span style="color: #ff0000;">cp<br /> /usr/share/doc/spamassassin-2.61/Razor2.patch .</span></span></span></span></span></span></span></span></span></span></p><p>patch -p0 &lt; Razor2.patch</p><p><span style="color: #009900;"><span style="color: #000000;"><span style="color: #993399;"><span style="color: #000000;"><span style="color: #ff0000;">cd<br /> /usr/local/src/razor-agents-2.36/blib/lib/Razor2</span></span></span></span></span></p><p><span style="color: #009900;"><span style="color: #000000;"><span style="color: #993399;"><span style="color: #000000;"><span style="color: #ff0000;"><span style="color: #009900;"><span style="color: #000000;"><span style="color: #993399;"><span style="color: #000000;"><span style="color: #ff0000;">cp<br /> /usr/share/doc/spamassassin-2.61/Razor2.patch .</span></span></span></span></span></span></span></span></span></span></p><p>patch -p0 &lt; Razor2.patch</p><p><span style="color: #009900;"><span style="color: #000000;"><span style="color: #993399;"><span style="color: #000000;"><span style="color: #ff0000;"><br style="color: #ff0000;" /><br /> </span><span style="color: #ff0000;">/etc/init.d/spamassassin<br /> restart</span><br style="color: #ff0000;" /></span></span></span></span></p><p>5) Make spam and ham learning automatic</p><p><span style="color: #ff0000;">cp<br /> /usr/local/src/kludge-scripts/spam-learn /etc/cron.daily</span><br style="color: #ff0000;" /><br /> <span style="color: #009900;"><span style="color: #000000;"><span style="color: #993399;"><span style="color: #000000;"><span style="color: #ff0000;">cp<br /> /usr/local/src/kludge-scripts/ham-learn /etc/cron.daily</span></span></span></span></span></p><p>cd /etc/cron.daily<br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">chmod 755 ./spam-learn</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">chmod 755 ./ham-learn</span></p><p><span style="color: #009900;"><span style="color: #000000;"><span style="color: #993399;"><span style="color: #000000;"> </span></span></span></span></p><p>This will automatically scan your users Not_Spam and Actual_Spam<br /> folders nightly and learn the messages they&#8217;ve placed within.</p><p><big style="color: #cc9933;">FYI we&#8217;re using a group database<br /> for bayesian learning, so a malicious user could theoretically corrupt<br /> it by intentionally learning the wrong messages.</big></p><p><big style="font-style: italic;"><a name="Stage_3_c"></a>PART C:<br /> Challenge/Response (TMDA)</big></p><p><big style="font-style: italic;"> </big></p><hr style="width: 100%; height: 2px;" /><span style="color: #009900;"><span style="color: #000000;"><span style="color: #993399;"><span style="color: #000000;">Rather<br /> than drop suspected spam emails we&#8217;re going to challenge them to<br /> confirm their identity.  The TMDA package allows us to do this<br /> easily.</p><p>1) Unpack the source</p><p><span style="color: #ff0000;">cd /usr/local/src</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">tar -xvzf tmda-<span style="color: #993399;">$TMDA_VERSION</span>.tar.gz</span></p><p><span style="color: #ff0000;">cd tmda-$TMDA_VERSION</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">./compileall</span><br style="color: #ff0000;" /></p><p>2) Copy the configuration file to the right location</p><p><span style="color: #ff0000;">cp<br /> /usr/local/src/kludge-scripts/tmdarc /etc/tmdarc</span></p><p>3) Setup our user&#8217;s tmda configuration</p><p><span style="color: #ff0000;">cd /usr/local/src/kludge-scripts</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">./tmda-user-setup.sh</span> <span style="color: #993399;">$TEST_USERNAME</span></p><p>Here is a copy of the script <a href="./kludge-scripts/tmda-user-setup.sh.txt">tmda-user-setup.sh</a></p><p>4) Add confirming spammers listed on TMDA site, and the qmail list ebay<br /> confirmation guy to badmailfrom</p><p><span style="color: #ff0000;">echo &#8220;@crossnet.se&#8221; &gt;<br /> /var/qmail/control/badmailfrom</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">echo &#8220;@naver.com&#8221; &gt;&gt;<br /> /var/qmail/control/badmailfrom</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">echo &#8220;@server145.truehosting.net&#8221;<br /> &gt;&gt;<br /> /var/qmail/control/badmailfrom</span></p><p>5) Setup the default delivery</p><p><span style="color: #ff0000;">cp<br /> /usr/local/src/kludge-scripts/dot-qmail-default-stage3<br /> /home/virtual/.qmail-default</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">emacs /usr/local/src/tmda-<span style="color: #993399;">$TMDA_VERSION</span>/contrib/vmailmgr-vdir.sh</span></p><p>change listvdomain to /usr/bin/listvdomain</p><p>change sed to /bin/sed</p><p>6) Create the devnull user so that challenge bounces will be discarded</p><p><span style="color: #ff0000;">cd /etc/kludge</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">./kludge-adduser.sh devnull <span style="color: #993399;">$PASSWORD</span></span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">emacs /etc/tofmipd</span><br style="color: #ff0000;" /><br /> remove devnull using <span style="color: #ff0000;">&lt;CTRL&gt;&lt;k&gt;</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">&lt;CTRL&gt;&lt;x&gt;&lt;s&gt;</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">&lt;CTRL&gt;&lt;x&gt;&lt;c&gt;</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">emacs /var/qmail/control/validusers</span><br style="color: #ff0000;" /><br /> remove devnull using <span style="color: #ff0000;">&lt;CTRL&gt;&lt;k&gt;</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">&lt;CTRL&gt;&lt;x&gt;&lt;s&gt;</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">&lt;CTRL&gt;&lt;x&gt;&lt;c&gt;</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">emacs<br /> /home/virtual/users/devnull/.tmda/filters/incoming</span><br style="color: #ff0000;" /><br /> Add these two lines<br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">#Get rid of messages</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">to devnull@<span style="color: #993399;">$DOMAIN</span> drop</span><br style="color: #ff0000;" /><br /> <br style="color: #ff0000;" /><br /> 7) Send a regular test mail to and from your free webmail account, then<br /> try mailing yourself something spammy</p><p>END STAGE 3, THE INITIAL SPAM REDUCTION SETUP IS DONE</p><p><big style="font-weight: bold;"><a name="Setup_Stage_4"></a>NOISE<br /> REDUCTION &#8211; STAGE 4</big></p><p><big style="font-style: italic;"><a name="Stage_4_a"></a>PART A:<br /> TMDA-OFMIPD</big></p><hr style="width: 100%; height: 2px;" />This program will allow us to use<br /> some of TMDA&#8217;s more advanced features with MUA&#8217;s that don&#8217;t invoke the<br /> sendmail wrapper provided with qmail.  The main features we&#8217;ll be<br /> using is dated Reply-To addresses, and dated envelope sender<br /> addresses.  This system is going to be<br /> installed globally.</p><p>1) Create a password file, for simplicity I recommend using the same<br /> password as you are for your virtual user. (Later we&#8217;ll configure<br /> Mozilla to enter these automatically)</p><p><span style="color: #ff0000;">echo <span style="color: #993399;">$TEST_USER<span style="color: #ff0000;">@</span>$DOMAIN</span>:<span style="color: #993399;">$PASSWORD</span> &gt; /etc/tofmipd</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">chmod 600 /etc/tofmipd</span><br style="color: #ff0000;" /></p><p>2) Set up the directories so we can run tmda-ofmipd under daemontools</p><p><span style="color: #ff0000;">mkdir /var/log/qmail/tmda-ofmipd</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">mkdir -p<br /> /var/qmail/supervise/tmda-ofmipd/log</span><br style="color: #ff0000;" /></p><p>3) Create the /var/qmail/supervise/tmda-ofmipd/run file</p><p><span style="color: #ff0000;">#!/bin/sh</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">exec<br /> /usr/local/src/$VERSION/bin/tmda-ofmipd -f -S<br /> /usr/local/src/tmda-<span style="color: #993399;">$TMDA_VERSION</span>/vmailmgr-vdir.sh<br /> -u root</span></p><p>4) Create the /var/qmail/supervise/tmda-ofmipd/log/run file</p><p><span style="color: #ff0000;">#!/bin/sh</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">exec /usr/local/bin/multilog t<br /> /var/log/qmail/tmda-ofmipd</span><br style="color: #ff0000;" /></p><p>5) make the scripts executable</p><p><span style="color: #ff0000;">chmod 755<br /> /var/qmail/supervise/tmda-ofmipd/run</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">chmod 755<br /> /var/qmail/supervise/tmda-ofmipd/log/run</span></p><p>6) Start the service</p><p><span style="color: #ff0000;">ln -s<br /> /var/qmail/supervise/tmda-ofmipd /service/tmda-ofmipd</span></p><p>7) Edit your mozilla account outgoing server SMTP settings</p><p>Port = <span style="color: #ff0000;">8025</span></p><p><big style="font-style: italic;"><a name="Stage_4_b"></a>PART B:<br /> Installing CDB</big></p><p><big style="font-style: italic;"> </big></p><hr style="width: 100%; height: 2px; font-style: italic;" />This program<br /> allows us to make convenient small databases in place of large text<br /> files.</p><p>1) Unpacking the tarball</p><p><span style="color: #ff0000;">cd /usr/local/src</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">tar -xvzf  cdb-<span style="color: #993399;">$CDB_VERSION</span>.tar.gz</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">cd cdb*</span></p><p>2) Building the program</p><p><span style="color: #ff0000;">cp<br /> /usr/local/src/cdb-0.75.errno.patch /usr/local/src/cdb-0.75</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">patch &lt; cdb-0.75.errno.patch</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">make</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">make setup check</span></p><p>3) Testing</p><p><span style="color: #ff0000;">make rts</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">./rts &gt; rts.out</span></p><p><big style="color: #cc9933;">This will take a few minutes,<br /> it&#8217;s writing three 4GB databases to /dev/null</big></p><p><big style="color: #cc9933;"> </big><span style="color: #ff0000;">cmp rts.out rts.exp</span></p><p>You may get an error that says</p><p><span style="color: #009900;">rts.out rts.exp differ: byte 3670,<br /> line 202</span></p><p>If you do, don&#8217;t worry about it, it&#8217;s caused by the way malloc works on<br /> Linux as opposed to BSD</p><p><big style="font-style: italic;"><a name="Stage_4_c"></a>PART C:<br /> Stopping dictionary attacks<br /> and mail to non-existant users (mailfront)</big></p><p><big style="font-style: italic;"> </big></p><hr style="width: 100%; height: 2px;" />qmail was designed when the<br /> internet was a bit friendlier place, and as such was more interested in<br /> assissting people than blocking the bad guys.  The mailfront<br /> package allows us to block the vast majority of mail which isn&#8217;t<br /> actually for our users, by imposing some simple rules on incoming smtp<br /> conversations.</p><p>1) Unpacking and installing the support libraries</p><p><span style="color: #ff0000;">cd /usr/local/src</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">rpm &#8211;rebuild<br /> bglibs-<span style="color: #993399;">$BGLIBS_VERSION</span>.src.rpm</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">rpm &#8211;rebuild cvm-<span style="color: #993399;">$CVM_VERSION</span>.src.rpm</span></p><p><span style="color: #ff0000;">cd /usr/src/RPM/RPMS/i586</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">rpm -ivh bglibs-<span style="color: #993399;">$BGLIBS_VERSION</span>.i586.rpm</span></p><p><span style="color: #ff0000;">rpm -ivh cvm-devel-<span style="color: #993399;">$CVM-DEVEL_VERSION</span>.i586.rpm</span></p><p>2) Unpacking and installing the mailfront program</p><p><span style="color: #ff0000;">cd /usr/local/src</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">rpm &#8211;rebuild<br /> mailfront-<span style="color: #993399;">$MAILFRONT_VERSION</span>.src.rpm</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">cd /usr/src/RPM/RPMS/i586</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">rpm -ivh<br /> mailfront-<span style="color: #993399;">$MAILFRONT_VERSION</span>.i586.rpm</span></p><p>3) Normally you would edit the qmail-smtpd run script, but it&#8217;s already<br /> been done just copy it over</p><p><span style="color: #ff0000;">qmailctl stop</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">cp<br /> /usr/local/src/kludge-scripts/qmail-smtpd-run-stage4<br /> /var/qmail/supervise/qmail-smtpd/run</span><br style="color: #ff0000;" /><br /> Confirm the overwrite</p><p><span style="color: #ff0000;">qmailctl start</span></p><p>Here is a copy of my file <a href="./kludge-scripts/qmail-smtpd-run-stage4.txt">qmail-smtpd-run-stage4</a></p><p>4) Copy the mailrules file into the correct location</p><p><span style="color: #ff0000;">cp /usr/local/src<br /> /var/qmail/control/mailrules</span></p><p>Here is a copy of my file <a href="./kludge-scripts/mailrules.txt">mailrules</a></p><p><big><span style="color: #cc9933;">Both valid address files<br /> must exist.</span></big></p><p><big style="color: #cc9933;">Make sure you adjust the domain<br /> name or you&#8217;ll be accepting my mail not yours, hehe.</big></p><p>5) Create the valid address files</p><p><span style="color: #ff0000;">echo <span style="color: #993399;">$TEST_USER</span>@<span style="color: #993399;">$DOMAIN</span> &gt;<br /> /var/qmail/control/validusers</span><br style="color: #ff0000;" /></p><p>Here is a copy of my file <a href="./kludge-scripts/validusers.txt">validusers</a></p><p><big style="color: #cc9933;">Make sure to use your own users<br /> or you&#8217;ll be allowing what works for me, not what works for you, hehe.</big></p><p><big style="color: #cc9933;"> </big></p><p><span style="color: #ff0000;">cd /var/qmail/control</span><br style="color: #ff0000;" /><br /> <big style="color: #cc9933;">Make sure to alter the contents<br /> of the mailfront-inputfile by replacing my domain with yours or you&#8217;ll<br /> be accepting the wrong addresses.</big></p><p>Here is a copy of my file <a href="./kludge-scripts/mailfront-inputfile.txt">mailfront-inputfile</a><span style="color: #ff0000;"> </span></p><p>cdbmake-12 morevalidusers.cdb<br /> morevalidusers.tmp &lt;<br /> /usr/local/src/kludge-scripts/mailfront-inputfile<br style="color: #ff0000;" /></p><p>6) Send a test message to and from your free webmail account</p><p>END STAGE 4, THE QUEUE WILL BE MUCH QUIETER NOW</p><p><big style="font-weight: bold;"><a name="Setup_Stage_5"></a>ANTI-VIRUS<br /> - STAGE 5</big></p><p><big style="font-weight: bold;"> </big></p><p><big style="font-style: italic;"><a name="Setup_5_a"></a>PART A:<br /> Setting up ClamAV</big></p><p><big style="font-style: italic;"> </big></p><hr style="width: 100%; height: 2px;" />Both to be good net citizens, and<br /> to protect any Microsoft OS machines we might have we&#8217;re going to scan<br /> mail for viral signatures.</p><p>1) Install a supporting package</p><p><span style="color: #ff0000;">cd /usr/local/src</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">urpmi gmp-devel</span></p><p>2) unpack the tarball</p><p><span style="color: #ff0000;">tar -xvzf clam-<span style="color: #993399;">$CLAMAV_VERSION</span>.tar.gz</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">cd clam*</span></p><p>3)  Build the software</p><p><span style="color: #ff0000;">./configure &#8211;sysconfdir=/etc</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">make</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">make install</span></p><p>4) Edit the configuration file</p><p><span style="color: #ff0000;">emacs /etc/clamav.conf</span></p><p>Here is a copy of my file <a href="./kludge-scripts/clamav.conf.txt">clamav.conf</a></p><p>5) Test the build by scaning the source directory recursively</p><p><span style="color: #ff0000;">clamscan -r -l scan.txt ../clamav-<span style="color: #993399;">$CLAMAV_VERSION</span></span></p><p>You should find four test files as infected</p><p>6) Test clamd by running it, and then running the scan from the daemon</p><p><span style="color: #ff0000;">cd clamd</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">emacs clamd</span></p><p>Add in tmp fix for Mandrake issue</p><p>TMPDIR=&#8221;/tmp&#8221;</p><p>export TMPDIR</p><p><span style="color: #ff0000;">./clamd</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">clamdscan -l scan.txt ../clamav-<span style="color: #993399;">$CLAMAV_VERSION</span></span></p><p>You should find three infected test files</p><p>7) Test the updater</p><p><span style="color: #ff0000;">freshclam</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">touch /var/log/clam-update.log</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">chmod 600 /var/log/clam-update.log</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">chown clamav.clamav<br /> /var/log/clam-update.log</span></p><p> <img src="http://newpush.com/wp-includes/images/smilies/icon_cool.gif?9d7bd4" alt='8)' class='wp-smiley' /> Add the updater as a daily cron job</p><p><span style="color: #ff0000;">cd /etc/cron.daily</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">emacs clamav-update</span></p><p><span style="color: #ff0000;">#!/bin/bash</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">export http_proxy=&#8221;<span style="color: #993399;">$PROXY</span>:<span style="color: #993399;">$PORT</span>&#8220;</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">/usr/local/bin/freshclam &#8211;quiet<br /> -l /var/log/clam-update.log</span></p><p><span style="color: #ff0000;">r = $?</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">if [ $r -le 1 ];</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">then exit 0</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">else exit $r</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">fi</span><br style="color: #ff0000;" /></p><p>The wierd junk with the exit codes keeps you from getting a<br /> notification email from CRON any time the database was already up to<br /> date when freshclam was run.</p><p><span style="color: #ff0000;">chmod 755 clamav-update</span></p><p><big style="font-style: italic;"><a name="Stage_5_b"></a>PART B:<br /> Installing qmail-scanner.pl</big></p><hr style="width: 100%; height: 2px;" />This will set up an interface<br /> which will run our virus scanner for us when invoked using qmailqueue.</p><p>1) Install some support software</p><p><span style="color: #ff0000;">urpmi db3-devel</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">urpmi mawk</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">perl -MCPAN -e &#8216;install<br /> Time::HiRes&#8217;  <big style="color: #cc9933;">Say no so<br /> that it will autoconfigure</big></span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">perl -MCPAN -e &#8216;install DB_File&#8217;</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">cd /usr/local/src</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">rpm -ivh /usr/local/src/tnef-<span style="color: #993399;">$TNEF_VERSION</span>mdk.i586.rpm</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">rpm &#8211;rebuild maildrop-<span style="color: #993399;">$MAILDROP_VERSION</span>rph.src.rpm</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">rpm -ivh<br /> /usr/src/RPM/RPMS/i586/maildrop-<span style="color: #993399;">$MAILDROP_VERSION</span>rph.i586.rpm</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">rpm -ivh<br /> /usr/src/RPM/RPMS/i586/maildrop-devel-<span style="color: #993399;">$MAILDROP_DEVEL_VERSION</span>rph.i586.rpm</span></p><p>2)  Unpack qmail-scanner</p><p><span style="color: #ff0000;">cd /usr/local/src</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">tar -xvzf qmail-scanner-<span style="color: #993399;">$QMAIL_SCANNER_VERSION</span>.tar.gz</span><br style="color: #ff0000;" /></p><p>3) Run the configure script to see if everything is set properly</p><p><span style="color: #ff0000;">groupadd qscand</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">useradd -c &#8220;Qmail-Scanner Account&#8221;<br /> -g qscand -s /bin/false qscand</span></p><p><span style="color: #ff0000;">cd qmail-scanner*</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;"> ./configure</span><br style="color: #ff0000;" /></p><p><big><span style="color: #cc9933;">The configure script takes<br /> a LONG time, several minutes at least, you have to wait till it<br /> finishes.</span></big></p><p>4) Run the configure script to install</p><p><span style="color: #ff0000;">./configure &#8211;notify recips,admin<br /> &#8211;install</span></p><p>5) Update the test script</p><p><span style="color: #ff0000;">cd ./contrib</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">emacs test_installation.sh</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">Change RECIP=&#8221;root&#8221; to<br /> RECIP=&#8221;vmail-root&#8221;</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">&lt;CTRL&gt; &lt;x&gt; &lt;s&gt;</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">&lt;CTRL&gt; &lt;x&gt; &lt;c&gt;</span></p><p><big style="color: #cc9933;">Make sure that your softlimit in<br /> /var/qmail/supervise/qmail-smtpd is set to 20000000  (20mb) and<br /> that your server has at least 512mb of RAM</big></p><p><big style="color: #cc9933;"> </big></p><p><span style="color: #ff0000;">./test_installation.sh -doit</span></p><p>6) Set qmail-scanner to use the daemonized version instead of the<br /> regular version.</p><p><span style="color: #ff0000;">cd /var/qmail/bin</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">sed -i -e<br /> s/clamscan/clamdscan/ qmail-scanner-queue.pl</span></p><p>Test it and repeat sed line if necessary <span style="color: #ff0000;">cat qmail-scanner-queue.pl | grep<br /> clamscan</span><br style="color: #ff0000;" /></p><p>7) Edit your /etc/tcp.smtp file</p><p><span style="color: #ff0000;">cp<br /> /usr/local/src/kludge-scripts/etc-tcp.smtp-stage5 /etc/tcp.smtp</span></p><p><span style="color: #ff0000;">qmailctl cdb</span></p><p>Here is a copy of my file <a href="./kludge-scripts/tcp.smtp-stage5.txt">tcp.smtp-stage5</a></p><p> <img src="http://newpush.com/wp-includes/images/smilies/icon_cool.gif?9d7bd4" alt='8)' class='wp-smiley' /> Start the scanner</p><p><span style="color: #ff0000;">su qmaild -c<br /> &#8220;/usr/local/src/qmail-scanner-<span style="color: #993399;">$QMAIL_SCANNER_VERSION</span>/qmail-scanner-queue.pl&#8221;</span></p><p>9) Set up a cron job to rotate the logfile</p><p><span style="color: #ff0000;">cd /etc/cron.daily</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">emacs move-qmail-scanner-log</span><br style="color: #ff0000;" /></p><p><span style="color: #ff0000;">#!/bin/sh</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">mv -f<br /> /var/spool/qmailscan/qmail-queue.log<br /> /var/spool/qmailscan/qmail-queue.log.1</span></p><p><span style="color: #ff0000;">&lt;CTRL&gt; &lt;x&gt; &lt;s&gt;</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;"><br /> &lt;CTRL&gt; &lt;x&gt; &lt;c&gt;</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">chmod 755 move-qmail-scanner-log</span></p><p>10) Set the list of quarantine attachments to those listed in<br /> Microsoft&#8217;s Knowledge Base Article 291369</p><p>For reference here is the complete list of file types to be denied:</p><p></span></span></span></span></span></span></span></span></p><table style="text-align: left; width: 20%; height: 10%;" border="1" cellspacing="2" cellpadding="2"><tbody><tr><td style="vertical-align: top;">.ad</td><td style="vertical-align: top;">.mde</td><td style="vertical-align: top;">.ws</td></tr><tr><td style="vertical-align: top;">.adp</td><td style="vertical-align: top;">.msc</td><td style="vertical-align: top;">.wsc</td></tr><tr><td style="vertical-align: top;">.asp</td><td style="vertical-align: top;">.msi</td><td style="vertical-align: top;">.wsf</td></tr><tr><td style="vertical-align: top;">.bas</td><td style="vertical-align: top;">.msp</td><td style="vertical-align: top;">.wsh</td></tr><tr><td style="vertical-align: top;">.bat</td><td style="vertical-align: top;">.mst</td><td style="vertical-align: top;"></td></tr><tr><td style="vertical-align: top;">.chm</td><td style="vertical-align: top;">.pcd</td><td style="vertical-align: top;"></td></tr><tr><td style="vertical-align: top;">.cmd</td><td style="vertical-align: top;">.pif</td><td style="vertical-align: top;"></td></tr><tr><td style="vertical-align: top;">.com</td><td style="vertical-align: top;">.reg</td><td style="vertical-align: top;"></td></tr><tr><td style="vertical-align: top;">.cpl</td><td style="vertical-align: top;">.scr</td><td style="vertical-align: top;"></td></tr><tr><td style="vertical-align: top;">.crt</td><td style="vertical-align: top;">.sct</td><td style="vertical-align: top;"></td></tr><tr><td style="vertical-align: top;">.exe</td><td style="vertical-align: top;">.shb</td><td style="vertical-align: top;"></td></tr><tr><td style="vertical-align: top;">.hlp</td><td style="vertical-align: top;">.shs</td><td style="vertical-align: top;"></td></tr><tr><td style="vertical-align: top;">.hta</td><td style="vertical-align: top;">.url</td><td style="vertical-align: top;"></td></tr><tr><td style="vertical-align: top;">.inf</td><td style="vertical-align: top;">.vb</td><td style="vertical-align: top;"></td></tr><tr><td style="vertical-align: top;">.ins</td><td style="vertical-align: top;">.vbe</td><td style="vertical-align: top;"></td></tr><tr><td style="vertical-align: top;">.isp</td><td style="vertical-align: top;">.vbs</td><td style="vertical-align: top;"></td></tr><tr><td style="vertical-align: top;">.js</td><td style="vertical-align: top;">.vsd</td><td style="vertical-align: top;"></td></tr><tr><td style="vertical-align: top;">.jse</td><td style="vertical-align: top;">.vss</td><td style="vertical-align: top;"></td></tr><tr><td style="vertical-align: top;">.lnk</td><td style="vertical-align: top;">.vst</td><td style="vertical-align: top;"></td></tr><tr><td style="vertical-align: top;">.mdb</td><td style="vertical-align: top;">.vsw</td><td style="vertical-align: top;"></td></tr></tbody></table><p><span style="color: #009900;"><span style="color: #000000;"><span style="color: #993399;"><span style="color: #000000;"><span style="color: #009900;"><span style="color: #000000;"><span style="color: #993399;"><span style="color: #000000;"><span style="color: #009900;"><span style="color: #000000;"><span style="color: #993399;"><span style="color: #000000;"><span style="color: #009900;"><span style="color: #000000;"><span style="color: #993399;"><span style="color: #000000;"><span style="color: #009900;"><span style="color: #000000;"><span style="color: #993399;"><span style="color: #000000;">This is NOT the best way to solve this problem, and I&#8217;m looking into<br /> setting up something with maildrop and base64 encoded strings, but for<br /> now it should work ok.</span></span></span></span></span></span></span></span></span></span></span></span></p><p><span style="color: #ff0000;">cd /var/spool/qmailscan</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">cp<br /> /usr/local/src/kludge-scripts/quarantine-attachments.txt</span><br style="color: #ff0000;" /></p><p><big><span style="color: #cc9933;">The entries MUST be TAB<br /> delimited, normal spaces will not work.</span></big></p><p>Here is a copy of my file <a href="./kludge-scripts/quarantine-attachments.txt">quarantine-attachments.txt</a></p><p>Then rebuild the database</p><p><span style="color: #ff0000;">/var/qmail/bin/qmail-scanner-queue.pl<br /> -g</span><br style="color: #ff0000;" /></p><p>11) Send a test message to and from your free webmail account, then try<br /> to send yourself an eicar test virus and a banned attachment</p><p>END STAGE 5, YOU SHOULD BE ABLE TO REST MUCH EASIER NOW WITH CLEANER<br /> INBOXES</p><p><big style="font-weight: bold;"><a name="Setup_Stage_6"></a>ADMIN -<br /> STAGE 6</big></p><p><big style="font-style: italic;"><a name="Stage_6_a"></a>PART A:<br /> Setting up mail quotas<br /> (mailquotacheck.sh)</big></p><hr style="width: 100%; height: 2px;" />This script, modified to work<br /> with vmailmgr and Mandrake, allows you to prevent users from recieving<br /> mail that would exceed their storage quota</p><p>1) Put the script in the right place</p><p><span style="color: #ff0000;">cp<br /> /usr/local/src/kludge-scripts/mailquotacheck.sh /etc/kludge</span></p><p><span style="color: #ff0000;">Here is a copy of my file <a href="./kludge-scripts/mailquotacheck.sh.txt">mailquotacheck.sh</a></span></p><p><span style="color: #ff0000;">chmod 700<br /> /etc/kludge/mailquotacheck.sh</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">chown vmail.virtual<br /> /etc/kludge/mailquotacheck.sh</span><br style="color: #ff0000;" /></p><p>2) Normall you would add the following line to your .qmail file on the<br /> first line</p><p>| /etc/kludge/mailquotacheck.sh $LOCAL</p><p>However, in this case all you have to do is a file copy</p><p><span style="color: #ff0000;">cp<br /> /usr/local/src/kludge-scripts/.qmail-default-stage6<br /> /home/virtual</span><br style="color: #ff0000;" /></p><p>Here is a copy of my<br /> file <a href="./kludge-scripts/dot-qmail-default-stage6.txt">dot-qmail-default-stage6</a></p><p>To override the base quota of forty megs, put a .quota file in the<br /> user&#8217;s<br /> directory containing the size limit</p><p>3) Set up a system to email the user warning messages when their quota<br /> limit is near</p><p><span style="color: #ff0000;">cp<br /> /usr/local/src/kludge-scripts/quota-scan /etc/cron.daily</span><br style="color: #ff0000;" /><br /> <big style="color: #cc9933;">Make sure to change the admin<br /> and domain variables to match your system</big></p><p>Here is a copy of my file <a href="./kludge-scripts/quota-scan.txt">quota-scan</a></p><p>4) Test the limit by sending yourself a number of large emails, and run<br /> the quota-scan script manually to make sure it&#8217;s working</p><p><big style="font-style: italic;"><a name="Stage_6_b"></a>PART B:<br /> Allowing for road warriors<br /> (relay-ctrl)</big></p><hr style="width: 100%; height: 2px;" />This will set up IMAP before SMTP<br /> which will allow you to temporarily add the IP address of authenticated<br /> users to the allowed relayers list.</p><p>1) Install the software</p><p><span style="color: #ff0000;">cd /usr/local/src</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">rpm &#8211;rebuild relay-ctrl-<span style="color: #993399;">$VERSION</span>.src.rpm</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">cd /usr/src/RPM/RPMS/i586</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">rpm -ivh relay-crtl-<span style="color: #993399;">$VERSION</span>.i586.rpm</span></p><p>2) Normally you would need to modify the qmail-smtpd run file to<br /> include the relay-ctrl-check but in this case just do a file copy</p><p><span style="color: #ff0000;">cp<br /> /usr/local/src/qmail-smtpd-run-stage6<br /> /var/qmail/supervise/qmail-smtpd/run</span></p><p>Here is a copy of my file <a href="./kludge-scripts/qmail-smtpd-run-stage6.txt">qmail-smtpd-run-stage6</a></p><p>3) Create a symlink for courier-imap</p><p><span style="color: #ff0000;">ln -s<br /> /usr/bin/relay-ctrl-allow<br /> /usr/lib/courier-imap/lib/authlib/relay-ctrl-allow</span><br style="color: #ff0000;" /></p><p>4) Insert the command at the end of the authmodules list</p><p><span style="color: #ff0000;">emacs<br /> /usr/lib/courier-imap/etc/imapd</span><br style="color: #ff0000;" /><br /> add relay-ctrl-allow to AUTHMODULES</p><p><span style="color: #ff0000;">&lt;CTRL&gt; &lt;x&gt; &lt;s&gt;</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">&lt;CTRL&gt; &lt;x&gt; &lt;c&gt;</span></p><p>Here is a copy of my file <a href="./kludge-scripts/imapd.txt">imapd</a></p><p> <img src="http://newpush.com/wp-includes/images/smilies/icon_cool.gif?9d7bd4" alt='8)' class='wp-smiley' /> Now edit the imapd-ssl.rc and imapd.rc files</p><p><span style="color: #ff0000;">cd /usr/lib/courier-imap/lib</span><br style="color: #ff0000;" /><br /> Open each file and search for <span style="color: #ff0000;">/usr/lib/courier-imap/lib/couriertcpd<br /> -address=<span style="color: #ff0000;">$ADDRESS</span> \</span></p><p>Then insert <span style="color: #ff0000;">/usr/local/bin/envdir<br /> /etc/relay-ctrl /usr/local/bin/relay-ctrl-chdir \</span><br style="color: #ff0000;" /><br /> above it. Thus, relay-ctrl will get initialized before &#8220;couriertcpd&#8221; is<br /> called.</p><p>9) Restart the relevant programs</p><p><span style="color: #ff0000;">qmailctl restart</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">/usr/lib/courier-imap/lib/imapd-ssl.rc<br /> restart</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">/usr/lib/courier-imap/lib/imapd.rc<br /> restart</span></p><p>10) Send a test message to and from your free webmail account.</p><p><big style="font-style: italic;"><a name="Stage_6_c"></a>PART C: Taking<br /> care of qmail&#8217;s CNAME<br /> errors (djbdns)</big></p><hr style="width: 100%; height: 2px;" />This will install a caching<br /> resolver on your machine so that qmail will be able to deal with<br /> oversized DNS responses.</p><p>1) Unpack the source</p><p><span style="color: #ff0000;">cd /usr/local/src</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">tar -xvzf djbdns-<span style="color: #993399;">$VERSION</span>.tar.gz</span><br style="color: #ff0000;" /></p><p>2) Patch for the glibc update</p><p><span style="color: #ff0000;">cd djbdns-<span style="color: #993399;">$VERSION</span></span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">patch -p1 &lt;<br /> ../djbdns-1.05.errno.patch</span></p><p><span style="color: #009900;">patching file error.h</span></p><p>3) Build the software</p><p><span style="color: #ff0000;">make</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">make setup check</span><br style="color: #ff0000;" /></p><p>4) Create the directories</p><p><span style="color: #ff0000;">mkdir /var/dns</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">mkdir /var/log/dnscache</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">mkdir /var/log/tinydns</span><br style="color: #ff0000;" /></p><p>5) Create the users and group</p><p><span style="color: #ff0000;">groupadd dns</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">useradd dnscache -g dns -d<br /> /var/dns -s /bin/false</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">useradd dnslog -g dns -d /var/dns<br /> -s /bin/false</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">useradd tinydns -g dns -d /var/dns<br /> -s /bin/false</span></p><p>6) Setup dnscache</p><p><span style="color: #ff0000;">dnscache-conf dnscache dnslog<br /> /var/dns/dnscache 192.168.1.25</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">emacs /var/dns/dnscache/log/run</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">change ./main to /var/log/dnscache</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">chown dnslog<br /> /var/log/dnscache</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">ln -s /var/dns/dnscache /service</span></p><p>7) Setup tinydns</p><p><span style="color: #ff0000;">tinydns-conf tinydns dnslog<br /> /var/dns/tinydns 127.0.0.1</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">chown dnslog /var/log/tinydns</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">emacs /var/dns/tinydns/log/run</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">change ./main to /var/log/tinydns</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">ln -s /var/dns/tinydns /service</span></p><p> <img src="http://newpush.com/wp-includes/images/smilies/icon_cool.gif?9d7bd4" alt='8)' class='wp-smiley' /> Configure your firewall to allow the email server address UDP and<br /> TCP access from ports 1024 65535 to any computer&#8217;s port 53</p><p>9) Setup the base IP</p><p><span style="color: #ff0000;">touch /var/dns/dnscache/root/ip/<span style="color: #993399;">$IP_ADDRESS</span></span></p><p>Replace $IP_ADDRESS with the network address of your email server NIC</p><p>10) Setup local dns resolution</p><p><span style="color: #ff0000;">cd /var/dns/dnscache/root/servers</span></p><p>replace $LOCAL_DNS_SERVER_ADDRESS with the IP address of your networks<br /> internal DNS server NIC</p><p>replace $LOCAL_DOMAIN_NAME with the name you use inside your split<br /> horizon</p><p>replace $LOCAL_IP_PORTION with the octets of your network address, for<br /> example, using Class C it would be 192.168.in-addr-arpa</p><p><span style="color: #ff0000;">echo <span style="color: #993399;">$LOCAL_DNS_SERVER_ADDRESS</span><br /> &gt; <span style="color: #993399;">$LOCAL_DOMAIN_NAME</span></span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">echo <span style="color: #993399;">$LOCAL_DNS_SERVER_ADDRESS</span><br /> &gt; <span style="color: #993399;">$LOCAL_IP_PORTION.in-addr.arpa</span></span></p><p><span style="color: #ff0000;">chown -R dnscache.dns dnscache</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">chown -R tinydns.dns tinydns</span><br style="color: #ff0000;" /></p><p>11) Start everything running</p><p><span style="color: #ff0000;">emacs /etc/resolv.conf</span></p><p>add the following lines</p><p><span style="color: #ff0000;">search <span style="color: #993399;">$LOCAL_DOMAIN_NAME</span></span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">nameserver <span style="color: #993399;">$IP_ADDRESS</span></span></p><p><span style="color: #ff0000;">&lt;CTRL&gt; &lt;x&gt;&lt;s&gt;</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">&lt;CTRL&gt; &lt;x&gt;&lt;c&gt;</span></p><p><span style="color: #ff0000;">svc -t /service/dnscache</span></p><p><big style="font-weight: bold;"><a name="Setup_Stage_7"></a>EXTRA<br /> CONFIGURATION &#8211; STAGE 7</big></p><p><big style="font-style: italic;"><a name="Stage_7_a"></a>PART A:<br /> Setting up digital signatures</big></p><p><big style="font-style: italic;"> </big></p><hr style="width: 100%; height: 2px; font-style: italic;" />In this<br /> section we&#8217;ll set all our accounts to use digital signatures for<br /> verification.  All work will be done on the client end, not the<br /> server, so I&#8217;ve just given a brief outline.</p><p>1) Install the enigmail module for mozilla</p><p>2) Install gnupg if it&#8217;s a linux box, or winpt if it&#8217;s a windows one</p><p>Make sure to generate a key, and set your cache<br /> value high</p><p>3) Edit mozilla&#8217;s account settings</p><p>Select your key</p><p>Check sign all messages by default</p><p>Set the gpg.exe path</p><p>Select never use pgp/mime so that we&#8217;ll have inline<br /> signatures</p><p>Set password memory for <span style="color: #ff0000;">9999</span> minutes</p><p>4) Export your key to a public keyserver</p><p>Export your public key to a file</p><p>Copy the file contents</p><p>Go to <a href="http://pgp.dtype.org/pgpnet/pks-commands.html">http://pgp.dtype.org/pgpnet/pks-commands.html</a></p><p>Paste the key into the box that says <span style="color: #ff0000;">Enter ASCII-armored PGP key here:</span></p><p>Press <span style="color: #ff0000;">Submit<br /> this key to keyserver!</span></p><p>Once everything is installed, you may get differently colored text<br /> above an email.  If it says UNVERIFIED signature, you lack the<br /> public key. if it says UNTRUSTED signature, you have their public key<br /> but it has not been signed. If it says Good signature, you have their<br /> public key and it&#8217;s been signed.</p><p><big><span style="font-style: italic;"><a name="Stage_7_b"></a>PART B:<br /> Setting things up so<br /> your users can use mailing lists</span></big></p><hr style="width: 100%; height: 2px;" />Many of your users may wish to<br /> subscribe to mailing lists, due to the fact that we&#8217;re enforcing dated<br /> addresses, this can be somewhat complicated.  The following isn&#8217;t<br /> a perfect solution, but it seems to work ok for me, let me know if you<br /> figure out something better.</p><p>1) Install safecat</p><p><span style="color: #ff0000;">cd /usr/local/src</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">tar -xvzf safecat-<span style="color: #993399;">$VERSION</span>.tar.gz</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">cd safecat-<span style="color: #993399;">$VERSION</span></span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">make</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">make setup check</span><br style="color: #ff0000;" /></p><p>1) Create a control file in the virtual directory:</p><p><span style="color: #ff0000;">cp<br /> /usr/local/src/kludge-scripts/dot-qmail-user-list-default<br /> /home/virtual/.qmail-<span style="color: #993399;">$USERNAME</span>-list-default</span><br /> <big style="color: #cc9933;">You must do this for each<br /> mailing list user on your system before they subscribe!</big></p><p>Here is a link to my file <a href="./kludge-scripts/dot-qmail-user-list-default.txt">.qmail-chris_berry-list-default</a></p><p>2) Populate the mft_file with mailing list addresses that user plans to<br /> use</p><p>The mft_file makes it so that when you post to that list your email<br /> will get a Mail-Followup-To header, which will prevent you from getting<br /> alot of duplicates when lazy people hit reply-to-all instead of reply-to</p><p>Here&#8217;s what mine looks like:</p><p><span style="color: #ff0000;">cd /home/virtual/users/chris_berry/.tmda/lists</span></p><p>cat mft_file</p><p><span style="color: #009900;">windows2000@freelists.org</span><br style="color: #009900;" /><br /> <span style="color: #009900;">oclug@oclug.org</span><br style="color: #009900;" /><br /> <span style="color: #009900;">qmail@list.cr.yp.to</span><br style="color: #009900;" /><br /> <span style="color: #009900;">tmda-users@tmda.net</span><br style="color: #009900;" /><br /> <span style="color: #009900;">dns@list.cr.yp.to</span><br style="color: #009900;" /><br /> <span style="color: #009900;">bgware@lists.untroubled.org</span></p><p>3) Populate the mailing_lists file</p><p>Here&#8217;s what mine looks like:</p><p><span style="color: #ff0000;">cat mailing_lists</span></p><p><span style="color: #009900;">windows2000@freelists.org<br /> explicit=chris_berry-list-windows2000@jm-associates.com</span><br style="color: #009900;" /><br /> <span style="color: #009900;">oclug@oclug.org<br /> explicit=chris_berry-list-oclug@jm-associates.com</span><br style="color: #009900;" /><br /> <span style="color: #009900;">qmail*@list.cr.yp.to<br /> explicit=chris_berry-list-qmail@jm-associates.com</span><br style="color: #009900;" /><br /> <span style="color: #009900;">tmda-users@tmda.net<br /> explicit=chris_berry-list-tmda-users@jm-associates.com</span><br style="color: #009900;" /><br /> <span style="color: #009900;">dns*@list.cr.yp.to<br /> explicit=chris_berry-list-djbdns@jm-associates.com</span><br style="color: #009900;" /><br /> <span style="color: #009900;">bgware*@lists.untroubled.org<br /> explicit=chris_berry-list-bgware@jm-associates.com</span></p><p><big><span style="font-style: italic;"><a name="Stage_7_c"></a>PART C:<br /> Setting up some helpful<br /> administrative scripts</span></big></p><hr style="width: 100%; height: 2px;" />These scripts should make your<br /> administrative life easier by allowing you to add users.  They&#8217;re<br /> still alpha quality, so review them carefully before using them on your<br /> system.</p><p><span style="color: #ff0000;">cp<br /> /usr/local/src/kludge-scripts/kludge-adduser.sh /etc/kludge</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;"><span style="color: #ff0000;">cp<br /> /usr/local/src/kludge-scripts/kludge-addlocal.sh /etc/kludge</span><br style="color: #ff0000;" /><br /> </span><span style="color: #ff0000;"><span style="color: #ff0000;">cp<br /> /usr/local/src/kludge-scripts/kludge-removeuser.sh /etc/kludge</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;"><span style="color: #ff0000;">cp<br /> /usr/local/src/kludge-scripts/kludge-removelocal.sh /etc/kludge</span></span></span></p><p><span style="color: #ff0000;"><span style="color: #ff0000;"><span style="color: #ff0000;"><span style="color: #ff0000;">cp<br /> /usr/local/src/kludge-scripts/localqmail /home/virtual</span></span></span></span></p><p><span style="color: #ff0000;">chmod 700<br /> /etc/kludge/kludge-adduser.sh</span></p><p><span style="color: #ff0000;">chmod 700<br /> /etc/kludge/kludge-addlocal.sh</span></p><p><span style="color: #ff0000;">chmod 700<br /> /etc/kludge/kludge-removeuser.sh</span></p><p><span style="color: #ff0000;">chmod 700<br /> /etc/kludge/kludge-removelocal.sh</span></p><p><span style="color: #ff0000;">chmod 644<br /> /home/virtual/localqmail</span></p><p>Here is a copy of the file <a href="./kludge-scripts/kludge-adduser.sh.txt">kludge-adduser.sh</a></p><p>Here is a copy of the file <a href="./kludge-scripts/kludge-addlocal.sh.txt">kludge-addlocal.sh</a></p><p>Here is a copy of the file <a href="./kludge-scripts/kludge-removeuser.sh.txt">kludge-removeuser.sh</a></p><p>Here is a copy of the file <a href="./kludge-scripts/kludge-removelocal.sh.txt">kludge-removelocal.sh</a></p><p>Here is a copy of the file <span style="text-decoration: underline;"><a href="./kludge-scripts/localqmail.txt">localqmail</a></span></p><p>END STAGE 7, YOU&#8217;RE ALL DONE, CONGRADULATIONS</p><p><a name="Stage_8"></a><big><span style="font-weight: bold;">OPTIONS -<br /> STAGE 8</span></big></p><p><a name="Stage_8_a"></a><big style="font-style: italic;">PART A:<br /> Setting up a mailing list</big></p><hr style="width: 100%; height: 2px;" />It&#8217;s nice to be able to run your<br /> own mailing list, here&#8217;s how to set up your own.</p><p>1) Get the software</p><p><span style="color: #ff0000;">cd /usr/local/src</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">wget<br /> ftp.ezmlm.org/pub/patches/ezmlm-idx-<span style="color: #993399;">$VERSION</span>.tar.gz</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">wget<br /> http://cr.yp.to/software/ezmlm-<span style="color: #993399;">$VERSION</span>.tar.gz</span></p><p>2) Upack the software</p><p><span style="color: #ff0000;">tar -xvzf ezmlm-<span style="color: #993399;">$VERSION</span>.tar.gz</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">tar -xvzf ezmlm-idx-<span style="color: #993399;">$VERSION</span>.tar.gz</span></p><p>3) Patch ezmlm</p><p><span style="color: #ff0000;">cd ezmlm-idx-<span style="color: #993399;">$VERSION</span></span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">cp -fr ./* ../ezmlm-<span style="color: #993399;">$VERSION</span></span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">cd ../ezmlm-<span style="color: #993399;">$VERSION</span></span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">patch &lt; idx.patch</span></p><p><span style="color: #009900;">patching file ezmlm-warn.1</span><br style="color: #009900;" /><br /> <span style="color: #009900;">patching file ezmlm-return.1</span><br style="color: #009900;" /><br /> <span style="color: #009900;">patching file ezmlm-send.1</span><br style="color: #009900;" /><br /> <span style="color: #009900;">patching file ezmlm-sub.1</span><br style="color: #009900;" /><br /> <span style="color: #009900;">patching file ezmlm-unsub.1</span><br style="color: #009900;" /><br /> <span style="color: #009900;">patching file ezmlm-list.1</span><br style="color: #009900;" /><br /> <span style="color: #009900;">patching file ezmlm.5</span><br style="color: #009900;" /><br /> <span style="color: #009900;">patching file log.c</span><br style="color: #009900;" /><br /> <span style="color: #009900;">patching file MAN</span><br style="color: #009900;" /><br /> <span style="color: #009900;">patching file BIN</span><br style="color: #009900;" /><br /> <span style="color: #009900;">patching file VERSION</span><br style="color: #009900;" /><br /> <span style="color: #009900;">patching file Makefile</span><br style="color: #009900;" /><br /> <span style="color: #009900;">patching file constmap.c</span><br style="color: #009900;" /><br /> <span style="color: #009900;">patching file constmap.h</span><br style="color: #009900;" /><br /> <span style="color: #009900;">patching file error.h</span><br style="color: #009900;" /><br /> <span style="color: #009900;">patching file error.c</span><br style="color: #009900;" /><br /> <span style="color: #009900;">patching file ezmlm-weed.c</span><br style="color: #009900;" /><br /> <span style="color: #009900;">patching file ezmlm-weed.1</span><br style="color: #009900;" /></p><p><span style="color: #ff0000;">wget<br /> ftp://moni.csi.hu/pub/glibc-2.3.1/ezmlm-idx-0.53.400.unified_41.patch</span></p><p><span style="color: #ff0000;">patch -p1 &lt;<br /> ezmlm-idx-0.53.400.unified_41.patch</span><br style="color: #ff0000;" /></p><p><span style="color: #009900;">patching file error.3</span><br style="color: #009900;" /><br /> <span style="color: #009900;">patching file error.h</span><br style="color: #009900;" /><br /> <span style="color: #009900;">patching file ezmlm-cgi.1</span><br style="color: #009900;" /><br /> <span style="color: #009900;">patching file ezmlm-cgi.c</span><br style="color: #009900;" /><br /> <span style="color: #009900;">patching file ezmlm-idx.c</span><br style="color: #009900;" /><br /> <span style="color: #009900;">patching file ezmlm-manage.c</span><br style="color: #009900;" /><br /> <span style="color: #009900;">patching file ezmlm-send.1</span><br style="color: #009900;" /><br /> <span style="color: #009900;">patching file ezmlm-send.c</span><br style="color: #009900;" /><br /> <span style="color: #009900;">patching file ezmlm-sub.1</span><br style="color: #009900;" /><br /> <span style="color: #009900;">patching file ezmlm-test.sh</span><br style="color: #009900;" /><br /> <span style="color: #009900;">patching file ezmlm-unsub.c</span><br style="color: #009900;" /><br /> <span style="color: #009900;">patching file Makefile</span><br style="color: #009900;" /><br /> <span style="color: #009900;">patching file tagmsg.c</span><br style="color: #009900;" /></p><p>4) Set up the users and groups</p><p><span style="color: #ff0000;">groupadd ezmlm</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">useradd -g ezmlm -d /home/ezmlm<br /> ezmlm -s /bin/bash</span></p><p>5) Build the binaries</p><p><span style="color: #ff0000;">make</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">make man</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">make setup</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">./compile install.c</span></p><p><span style="color: #009900;">install.c: In function `main&#8217;:</span><br style="color: #009900;" /><br /> <span style="color: #009900;">install.c:125: warning: return<br /> type of `main&#8217; is not `int&#8217;</span><br style="color: #009900;" /><br /> <span style="color: #009900;">./load install getln.a strerr.a<br /> substdio.a stralloc.a \</span><br style="color: #009900;" /><br /> <span style="color: #009900;">alloc.a open.a error.a str.a fs.a</span><br style="color: #009900;" /><br /> <span style="color: #ff0000;">./install &#8220;`head -1 conf-bin`&#8221;<br /> &lt; BIN</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">./install &#8220;`head -1 conf-man`&#8221;<br /> &lt; MAN</span></p><p>6) Setup the list user</p><p><span style="color: #ff0000;">cd /etc/kludge</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">./kludge-adduser <span style="color: #993399;">$LISTNAME</span> <span style="color: #993399;">$PASSWORD</span></span></p><p><big style="color: #cc9933;">Make sure to remove the listname<br /> entries in /var/qmail/control/validusers and /etc/tofmipd</big></p><p><big style="color: #cc9933;"> </big></p><p>7)  Create the list</p><p><span style="color: #ff0000;">cd /usr/local/src/ezmlm-<span style="color: #993399;">$VERSION</span></span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">./ezmlm-make -dfgkrtux -5 <span style="color: #993399;">$LIST_ADMIN@$DOMAIN</span><br /> /home/virtual/users/<span style="color: #993399;">$LISTNAME</span>/ezmlm<br /> /home/virtual/.qmail-<span style="color: #993399;">$LISTNAME</span><br /> <span style="color: #993399;">$LISTNAME</span> <span style="color: #993399;">$DOMAIN</span></span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">cd /home/virtual/users/<span style="color: #993399;">$LISTNAME</span></span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">chown vmail.virtual<br /> /home/virtual/.qmail-<span style="color: #993399;">$LISTNAME</span>*</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">chown -R vmail.virtual ezmlm</span></p><p> <img src="http://newpush.com/wp-includes/images/smilies/icon_cool.gif?9d7bd4" alt='8)' class='wp-smiley' /> Setup the list admin</p><p><span style="color: #ff0000;">./ezmlm-sub /home/virtual/users/<span style="color: #993399;">$LISTNAME</span>/ezmlm <span style="color: #993399;">$LIST_ADMIN</span>-list-<span style="color: #993399;">$LISTNAME</span>@<span style="color: #993399;">$DOMAIN</span></span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">./ezmlm-sub /home/virtual/users/<span style="color: #993399;">$LISTNAME</span>/ezmlm/mod <span style="color: #993399;">$LIST_ADMIN</span>-list-<span style="color: #993399;">$LISTNAME</span>@<span style="color: #993399;">$DOMAIN</span></span></p><p><big style="color: #cc9933;">Don&#8217;t forget to add entries in<br /> the list admin&#8217;s mailing_lists and mft_file files</big></p><p>9) Reconfigure mailrues</p><p><span style="color: #ff0000;">cd /var/qmail/control</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">emacs mailrules</span></p><p>add</p><p><span style="color: #ff0000;">k*:<span style="color: #993399;">$LISTNAME</span>*@<span style="color: #993399;">$DOMAIN</span></span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">&lt;CTRL&gt;&lt;x&gt;&lt;s&gt;</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">&lt;CTRL&gt;&lt;x&gt;&lt;c&gt;</span></p><p><big style="font-style: italic;"><a name="Stage_8_b"></a>PART B:<br /> Setting up a .qmail based groups</big></p><p><big style="font-style: italic;"> </big></p><hr style="width: 100%; height: 2px;" />Many times your users will want<br /> to mail entire groups of addresses on your local system that are fairly<br /> standardized such as the whole marketing team.  An easy way to do<br /> this is to use dot qmail based groups.</p><p><span style="color: #ff0000;">cd /home/virtual</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">emacs .qmail-<span style="color: #993399;">$GROUP_NAME</span></span><br style="color: #ff0000;" /><br /> enter each address one per line preceeded by an ampersand</p><p><span style="color: #ff0000;">&amp;</span><span style="color: #993399;">$FIRST_ADDRESS</span></p><p><span style="color: #ff0000;">&amp;</span><span style="color: #993399;">$SECOND_ADDRESS</span></p><p><span style="color: #ff0000;">&amp;</span><span style="color: #993399;">$THIRD_ADDRESS</span></p><p>and so on</p><p><span style="font-style: italic;"><span style="color: #ff0000;">&lt;CTRL&gt;&lt;x&gt;&lt;s&gt;</span><br style="color: #ff0000;" /><br /> <span style="color: #ff0000;">&lt;CTRL&gt;&lt;x&gt;&lt;c&gt;</span></span></p><p>Now, you can send them a message by using $GROUP_NAME as an<br /> email addres<span style="font-style: italic;">s</span>, and the message<br /> will automatically be forwarded to all the addresses in the file.<span style="font-style: italic;"> </span></p><p><big style="font-style: italic;"><a name="FAQS"></a>FAQS</big></p><hr style="width: 100%; height: 2px;" /><span style="font-weight: bold;">1.0<br /> I&#8217;ve read your howto but I&#8217;m still having problems, where do I go for<br /> help?</span></p><p>If you&#8217;re still having problems, get help in this<br /> order:</p><p>1) Search the internet</p><p>2) Go to your local operating system mailing list</p><p>3) Go to the program specific mailing list</p><p>4) If you&#8217;ve done all that, and still come up short,<br /> then you can email<br /> me for help, but make sure you do your homework first!</p><p><span style="font-weight: bold;">1.1 How do I safely remove a message<br /> from the queue?</span></p><p><big style="color: #cc9933;">Whatever you<br /> do, don&#8217;t delete a message while qmail-send is running!! (You&#8217;ll<br /> corrupt the queue)</big> I prefer this:</p><p><span style="color: #ff0000;">touch -d &#8220;1<br /> week ago&#8221; <span style="color: #993399;">$INFO_FILE</span></span></p><p>Replace $INFO_FILE with the file named after the<br /> message ID, and located in /var/qmail/queue/info</p><p>At this point the message will be safely removed<br /> from the queue after the next delivery attempt, which you can force<br /> with <span style="color: #ff0000;">qmailctl alrm</span></p><p><span style="font-weight: bold;">1.2 I deleted all the messages in my<br /> trash and sent folders but I&#8217;m still getting overquota messages.</span></p><p>Make sure you tell Mozlla to &#8220;compact this folder&#8221;<br /> to actually delete the files, otherwise it just deletes the entry.</p><p><span style="font-weight: bold;">1.3 I love the kludge project, how can<br /> I help?</span><br style="font-weight: bold;" /><br /> There is always room for improvement.  Please<br /> contact me on the kludge mailing list and we&#8217;ll work out something that<br /> matches your skillset.</p><p><span style="font-weight: bold;">1.4 What about commercial support?</span><br style="font-weight: bold;" /><br /> I provide free informal support through the mailing<br /> list, however sometimes that isn&#8217;t what you&#8217;re looking for.  I<br /> currently work full time as a Systems Administrator for two companies,<br /> however I do a variety of contract work on the side.  If you&#8217;re<br /> interested in hiring me as a consultant please contact me directly for<br /> rates and availability.</p><p><big style="font-style: italic;"><a name="Things_To_Do"></a>THINGS TO DO</big></p><p><big style="font-style: italic;"> </big></p><hr style="width: 100%; height: 2px; font-style: italic;" />-Create a<br /> cron job to cleanup excess log files</p><p>-Work on developing a security lockdown section</p><p>-Improve the admin scripts to make things easier to administer</p><p>-Figure out how to make tmda-pending work, even though we&#8217;re using<br /> vmailmgr  (probably just going to wait for the new version of TMDA<br /> which supports maildir based pending directories)</p><p><big style="font-style: italic;"><a name="Bugs"></a>REPORTED BUGS</big></p><hr style="width: 100%; height: 2px;" />-Wayne Evans reported that he<br /> didn&#8217;t get a secure-linux kernal option, but I haven&#8217;t been able to<br /> confirm this with anyone else as of yet.</p><p>-Versions 0.2 and 0.3 of the mailquotacheck.sh script have an error in<br /> the quota warning message code, this has not been repaired as I decided<br /> this wasn&#8217;t a good way to do the quota warning messages.  v0.4 and<br /> newer have<br /> instructions on how to do it the new way.</p><p><big><span style="font-style: italic;"><a name="Changelog"></a>CHANGELOG</span><br style="font-style: italic;" /><br /> </big></p><hr style="width: 100%; height: 2px; font-style: italic;" />v0.5<br /> 25-May-2004</p><p>-Added run_setup.sh file to doc</p><p>-Updated mailquotacheck.sh and quota-scan to reflect 40 meg quota since<br /> 20 meg came up way too often.</p><p>-Fixed error in step 1A22, comma should have been a single quote</p><p>-Added notes explaining how /etc/group entries should look</p><p>-Changed instructions so that courier now gets added to the rpm group<br /> the way it&#8217;s supposed to</p><p>-Update tcp.smtp stage5 so that senders without reverse dns will<br /> recieve a message asking them to set it up</p><p>-Fixed the morevalidusers.cdb instructions by changing cdbmake-sv to<br /> cdbmake-12</p><p>-Called maildirmake more explicitly in step 1A29</p><p>-Added msec 4 statement to step 2B3 after perm.local copy so that new<br /> settings would apply</p><p>-Added courier_links script to step 2B6 and tarball</p><p>-Added /etc/tmdarc to tarball</p><p>-Fixed the qmail-smtp2 run script, it was pointing to the wrong tcp file</p><p>-Added several new admin scripts (addlocal, removeuser, removelocal)</p><p>-Added instructions on how to make .qmail based groups</p><p>-Automated spam/ham learning using cron job, and added instructions on<br /> how to set that up</p><p>-Updated kludge-adduser so that usernames will automatically be put in<br /> all lowercase before being created</p><p>v0.4<br /> 05-March-2004</p><p>-Added option section, including instructions on how to set up<br /> Ezmlm-idx to run your own mailing list</p><p>-Added dates to changelog</p><p>-There was a problem with the mailquotacheck.sh script, and a new way<br /> of sending quota warning messages has been outlined</p><p>-Added FAQ 1.4</p><p>v0.3  February-2004</p><p>-Added Table of contents with named anchor links</p><p>-Updated tmda-user-setup.sh to make tmda-keygen work without requiring<br /> manual editing, and to place the correct username in the outgoing<br /> filter file</p><p>-Added instructions on how to export your public key to a keyserver</p><p>-Added FAQ 1.3</p><p>-Added md5 sum for kludge-scripts tarball and instructions on how to<br /> check it</p><p>-Added file system hierarchy notice</p><p>-Added a pics file with screenshots of my mozilla setup</p><p>-Added instructions on how to create devnull user and drop confirmation<br /> bounces</p><p>v0.2.1  January-2004</p><p>-Added mailing list address</p><p>v0.2  December-2003</p><p>-Creative commons attribution license chosen due to requests as to<br /> which license I&#8217;m using for the documentation</p><p>-Added instructions for allowing mailing list subscription</p><p>-Added administrative scripts section</p><p>-Changed the TMDA config file to add logging rotation, user abstraction<br /> and MFT support</p><p>-Added missing link to tmda-user-setup.sh and updated script</p><p>-Updated mailquotacheck.sh to give a quota warning message (I think<br /> it&#8217;s working right, but if you get listvdomain/devnull errors in your<br /> qmail logs let me know)</p><p>-Changed tmda-filter-incoming by removing the last header check so that<br /> dated addresses will work right (ACTION_INCOMING default is confirm so<br /> it will work ok as long as you don&#8217;t change that)</p><p>-Changed tmda-filter-outgoing by upping the date limit on reply-to<br /> address tagging to ten days</p><p>-Added instructions on how to setup djbdns</p><p>-Added FAQS section</p><p>-Added things to do section</p><p>-Added bugs section</p><p>-Justified initial sections to make them look better</p><p>v0.1  October-2003</p><p>-Completely redid document based on Mandrake 9.2 instead of 8.2, new<br /> glibc, etc.</p><p>-Published document on website, and asked for peer review</p><p>v0.0  May-2003</p><p>-Original version not published on internet</p><p></span></span></span></span></span></span></span></span></p> ]]></content:encoded> <wfw:commentRss>http://newpush.com/2010/09/kludge-v0-5-email-server-a-detailed-howto/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>How to make cvm work on OpenBSD?</title><link>http://newpush.com/2009/05/how-to-make-cvm-work-on-openbsd/</link> <comments>http://newpush.com/2009/05/how-to-make-cvm-work-on-openbsd/#comments</comments> <pubDate>Fri, 29 May 2009 23:59:11 +0000</pubDate> <dc:creator>Balazs</dc:creator> <category><![CDATA[OpenBSD]]></category> <category><![CDATA[cvm]]></category> <category><![CDATA[Qmail]]></category> <category><![CDATA[Vmailmgr]]></category><guid isPermaLink="false">http://www.wdream.com/?p=213</guid> <description><![CDATA[Bruce Guenter&#8217;s cvm librairies use Linux style sockets. That is usually fine on OpenBSD, except that the cvm_udp code opens a socket, and then uses sendto() which implicitly reoppens the socket. OpenBSD doesn&#8217;t like that, so here is the patch &#8230; <a href="http://newpush.com/2009/05/how-to-make-cvm-work-on-openbsd/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p><span class="grey">Bruce Guenter&#8217;s cvm librairies use Linux style sockets. That is usually fine on OpenBSD, except that the cvm_udp code opens a socket, and then uses sendto() which implicitly reoppens the socket. OpenBSD doesn&#8217;t like that, so here is the patch to fix cvm-0.18:</p><pre>--- client.c.org        Fri Feb 20 12:07:55 2004
+++ client.c    Fri Feb 20 12:09:26 2004

This patch allows cvm to run on BSD.  Under Linux,
one can open a socket, and then use sendto which
technically reopens the socket.  Under BSD, it isn't
allowed to use sendto() with a socket that is
already open.

@@ -269,9 +269,8 @@
   if ((he = gethostbyname(hostname)) == 0) return 1;
   memcpy(&amp;ip, he-&gt;h_addr_list[0], 4);

-  if ((sock = socket_udp()) == -1) return CVME_IO;
-  if ( !socket_connect4(sock, &amp;ip, port) ||
-      !udp_sendrecv(sock, &amp;ip, port)) {
+  if ((sock = socket_udp()) == -1) return CVME_IO;
+  if (!udp_sendrecv(sock, &amp;ip, port)) {
     close(sock);
     return CVME_IO;
   }</pre><p></span></p> ]]></content:encoded> <wfw:commentRss>http://newpush.com/2009/05/how-to-make-cvm-work-on-openbsd/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>How to install Qmail / VmailMGR on OpenBSD</title><link>http://newpush.com/2009/05/how-to-install-qmail-vmailmgr-on-openbsd/</link> <comments>http://newpush.com/2009/05/how-to-install-qmail-vmailmgr-on-openbsd/#comments</comments> <pubDate>Fri, 29 May 2009 23:58:14 +0000</pubDate> <dc:creator>Balazs</dc:creator> <category><![CDATA[OpenBSD]]></category> <category><![CDATA[Qmail]]></category> <category><![CDATA[Vmailmgr]]></category><guid isPermaLink="false">http://www.wdream.com/?p=211</guid> <description><![CDATA[There is no single source that describes the proper installation of Qmail on OpenBSD, but there are multiple sources that combined provide a good picture: http://marc.theaimsgroup.com/?l=openbsd-misc&#38;m=106872052209964&#38;w=1 Installing and Configuring qmail 1.03 on OpenBSD 3.1 http://multivac.cwru.edu./spf/ http://multivac.cwru.edu./fs/#tricks Kludge e-mail server (local &#8230; <a href="http://newpush.com/2009/05/how-to-install-qmail-vmailmgr-on-openbsd/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p><span class="grey">There is no single source that describes the proper installation of Qmail on OpenBSD, but there are multiple sources that combined provide a good picture:<br /> <a href="http://marc.theaimsgroup.com/?l=openbsd-misc&amp;m=106872052209964&amp;w=1">http://marc.theaimsgroup.com/?l=openbsd-misc&amp;m=106872052209964&amp;w=1</a><br /> <a href="http://www.watters.ws/qmail.html">Installing and Configuring qmail 1.03 on OpenBSD 3.1</a><br /> <a href="http://multivac.cwru.edu/spf/">http://multivac.cwru.edu./spf/</a><br /> <a href="http://multivac.cwru.edu/fs/#tricks">http://multivac.cwru.edu./fs/#tricks</a><br /> <a href="http://newpush.com/2010/09/kludge-v0-5-email-server-a-detailed-howto/">Kludge e-mail server</a> (local reproduction of original post that has gone missing circa 2009)</span></p> ]]></content:encoded> <wfw:commentRss>http://newpush.com/2009/05/how-to-install-qmail-vmailmgr-on-openbsd/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
<!-- Served from: newpush.com @ 2012-02-09 09:54:51 by W3 Total Cache -->
