Content-Type: multipart/related; start=; boundary=----------jNfx0zYw7l8tHath7zDxwo Content-Location: http://www.gentoo.org/doc/en/mailfilter-guide.xml Subject: =?utf-8?Q?Gentoo=20Linux=20Documentation=20--=20Gentoo=20mailfiltering=20gateway=20guide?= MIME-Version: 1.0 ------------jNfx0zYw7l8tHath7zDxwo Content-Disposition: inline; filename=mailfilter-guide.htm Content-Type: text/html; name=mailfilter-guide.htm Content-Id: Content-Location: http://www.gentoo.org/doc/en/mailfilter-guide.xml Content-Transfer-Encoding: 8bit Gentoo Linux Documentation -- Gentoo mailfiltering gateway guide
Gentoo Logo

Gentoo mailfiltering gateway guide

Content:

1. Introduction

This guide describe step by step how to install a spam and virus filtering mail gateway. It is quite simple to adopt this to a single server solution.

The big picture

This document describe how to setup a spam filtering mail gateway with multiple domains. This server is meant to run in front of the mail servers actually keeping the mail accounts i.e. Microsoft Exchange or Lotus Notes.

In this setup applications with good security records and readable configuration files have been chosen. The email MTA is postfix which has a good security record and is fairly easy to setup right. Postfix will listen normally on port 25 for incoming mail. Upon reception it will forward it to Amavisd-new on port 10024. Amavisd-new will then filter the mail through different filters before passing the mail back to Postfix on port 10025 which in turn will forward the mail to the next mail server.

Amavisd-new is a content filtering framework utilizing helper applications for virus filtering and spam filtering. In this setup we will be using two helper applications one ClamAV for filtering virus mails and Spamassassin for filtering spam. Spamassassin itself can function as yet another layer of content filtering framework and utilize the helper applications Vipul's Razor2 and DCC.

Unlike many other spam fighting technologies like RBLs and others Spamassassin does not simply accept or reject a given email based on one single test. It uses a lot of internal tests and external helper applications to calculate a spam score for every mail passed through. This score is based on the following tests:

  • Bayesian filtering
  • Static rules based on regular expressions
  • Distributed and collaborative networks:
    • RBLs
    • Razor2
    • Pyzor
    • DCC

The first part (chapters 1 to 4) of the guide will describe the basic setup of a mailfiltering gateway. The next chapters can be implemented individually with no dependence between each chapter. These chapters describe how to:

  • setup special IMAP folders for learning of the Bayesian filter and for delivery of false positives
  • setup greylisting with Postfix
  • setup Amavisd-new to use a MySQL backend for user preferences
  • setup Spamassassin to use a MySQL backend for AWL and Bayes data

Note: The IMAP folders will be using the maildir format. Having each mail in a separate file makes handling much simpler. If you're using mbox I propose to give maildir a try. If you're not already using maildir emerge the necessary tools with emerge courier-imap.

A planned fifth part will contain various tips regarding performance and things you may want to know (running chrooted, postfix restrictions, etc.).

Note: Delegating responsibility to third parties is not without risks. You have to know and trust these third parties. In this setup only the decision to quarantine virus mails are based on a single third party. Using Spamassassin's scoring system the decision to stop spam mails are not made by a single authority except perhaps Spamassassins own static rules.

Warning: When rejecting spam mails at the MTA level you have to be very careful when selecting the RBL's you want to use, i.e. SpamCop is a bad RBL to use at the MTA level because you will experience false positives because sometimes their listing is just too aggressive. Further info at Realtime Blackhole Lists Are Bad and The Spam Problem: Moving Beyond RBLs

Preparations

Before you start make sure that you have a working Postfix installation where you can send and receive mails also you need a backend mailserver. If you're not experienced with setting up Postfix it might quickly become too complicated if all should be set up at once. If you need help you can find it in the excellent Virtual Mailhosting System with Postfix Guide in the Gentoo Documentation.

2. Installing the programs needed

We start out by installing the most important programs: Amavisd-new, Spamassassin and ClamAV.

Code Listing 2.1: Installing Amavis, Spamassassin and Clamav

# emerge amavisd-new spamassassin clamav 

Note: As previously mentioned you should already have a working postfix instance running on the box. Basically this shouldn't be much more than emerge postfix and have a basic understanding of how Postfix is working.

Setting up DNS

Note: If you're not setting up a gateway server but have the mailboxes on the same server you only have to create the MX-Record.

While the programs are emerging fire up another shell and create the needed DNS records.

Start out by creating a MX record for the mail gateway and an A record for the next destination.

Code Listing 2.2: Setting up DNS

(Create a MX record for the gateway server)
                MX      10      mailgateway.mydomain.tld.
(Create an A record for the gateway server)
mailgateway     A       mgw.ip.add.here
(Create an A record for the next hop mail server)
mail            A       ms.ip.add.here

Note: Some ADSL providers might block port 25 and force you to relay mail through one of their servers. Typically you have to create a secondary MX-Record like MX 20 backup-mx.some-isp.tld

Opening the firewall

In addition to allowing normal mail traffic you have to allow a few services through your firewall to allow the network checks to communicate with the servers.

Application Protocol Port
DCC UDP 6277
Razor(outgoing ping) TCP 7
Razor TCP 2703

Razor uses pings to discover what servers are closest to it.

Configuring Postfix

First we have to tell postfix to listen on port 10025 and we remove most of the restrictions as they have already been applied by the postfix instance listening on port 25. Also we ensure that it will only listen for local connections on port 10025. To accomplish this we have to add the following at the end of /etc/postfix/master.cf

Code Listing 2.3: Changing the master.cf file

smtp-amavis     unix -        -       n     -       2  smtp
  -o smtp_data_done_timeout=1200
  -o smtp_send_xforward_command=yes
#Equivalently when using lmtp:
#lmtp-amavis    unix -        -       n     -       2  lmtp
#   -o lmtp_data_done_timeout=1200
#   -o lmtp_send_xforward_command=yes
     
127.0.0.1:10025 inet n        -       n     -       -  smtpd
  -o content_filter=
  -o local_recipient_maps=
  -o relay_recipient_maps=
  -o smtpd_restriction_classes=
  -o smtpd_client_restrictions=
  -o smtpd_helo_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o mynetworks=127.0.0.0/8
  -o strict_rfc821_envelopes=yes
  -o smtpd_error_sleep_time=0
  -o smtpd_soft_error_limit=1001
  -o smtpd_hard_error_limit=1000

#If you want to use proxy filtering instead
#smtp            inet n         -       n      -       8 smtpd
# -o smtpd_proxy_filter=127.0.0.1:10024
# -o smtpd_client_connection_count_limit=4
#If you don't want to scan outgoing mail use this
#10.0.0.2:smtp   inet n         -       n       -      - smtpd
#-o content_filter=

Note: The smtp-amavis line specifies that a maximum of two of these processes may run at any time. If you need a greater degree of concurrency tune this number to fit your needs. Remember that to match the number with $max_servers in amavisd.conf. Keep in mind that amavisd-new is quite memory-intensive and raising the amount of amavisd-new processes too high can easily lead to memory starvation and heavy swapping, which leads to drastically reduced performance.

Note: If you want to reject spam early on in the process you can use the Before-Queue (proxy) method instead of the filter method. If you uncomment the three lines you will have to set content_filter= in main.cf. This is not recommended for high traffic servers as the number of concurrent connections are limited to the number of amavisd instances.

Warning: The Before-Queue(proxy) method is still not properly tested.

Note: If you, for any reason whatsoever, want to send mail from this box and don't want it scanned, add another postfix instance by uncommenting the last two lines and substitute with a proper IP.

The file master.cf tells the postfix master program how to run each individual postfix process. More info with man 8 master.

Next we need the main postfix instance listening on port 25 to filter the mail through amavisd-new listening on port 10024.

We also need to set the next hop destination for mail. Tell Postfix to filter all mail through an external content filter and enable explicit routing to let Postfix know where to forward the mail to.

Code Listing 2.4: Modifying /etc/postfix/main.cf

biff = no
empty_address_recipient = MAILER-DAEMON
queue_minfree = 120000000

content_filter = smtp-amavis:[127.0.0.1]:10024
#Equivalently when using lmtp:
#content_filter = lmtp-amavis:[127.0.0.1]:10024

# TRANSPORT MAP
#
# Insert text from sample-transport.cf if you need explicit routing.
transport_maps = hash:/etc/postfix/transport

relay_domains = $transport_maps

Postfix has a lot of options set in main.cf. For further explanation of the file please consult man 5 postconf or the same online Postfix Configuration Parameters.

The format of the transport file is the normal Postfix hash file. Mail to the domain on the left hand side is forwarded to the destination on the right hand side.

Code Listing 2.5: /etc/postfix/transport

mydomain.tld                          smtp:mail.mydomain.tld

After we have edited the file we need to run the postmap command. Postfix does not actually read this file so we have to convert it to the proper format with postmap /etc/postfix/transport. This creates the file /etc/postfix/transport.db. There is no need to reload Postfix as it will automatically pick up the changes.

Note: If the next hop mail server is not listening on the standard SMTP port 25 you can tell postfix to use a given port number, like smtp:mail.mydomain.tld:25000.

If your first attempts to send mail result in messages bouncing, you've likely made a configuration error somewhere. Try temporarily enabling soft_bounce while you work out your configuration issues. This prevents postfix from bouncing mails on delivery errors by treating them as temporary errors. It keeps mails in the mail queue until soft_bounce is disabled or removed.

Code Listing 2.6: Enabling soft_bounce

# postconf -e "soft_bounce = yes"
# /etc/init.d/postfix reload

Once you've finished creating a working configuration, be sure to disable or remove soft_bounce and reload postfix.

Configuring Amavisd-new

Amavisd-new is used to handle all the filtering and allows you to easily glue together severel different technologies. Upon reception of a mail message it will extract the mail, filter it through some custom filters, handle white and black listing, filter the mail through various virus scanners and finally it will filter the mail using SpamAssassin.

Amavisd-new itself has a number of extra features:

  • it identifies dangerous file attachments and has policies to handle them
  • per-user, per-domain and system-wide policies for:
    • whitelists
    • blacklists
    • spam score thresholds
    • virus and spam policies

Apart from postfix and freshclam we will run all applications as the user amavis.

Edit the following lines in /etc/amavisd.conf

Code Listing 2.7: Editing /etc/amavisd.conf

(Insert the domains to be scanned)
$mydomain = 'example.com';     
(Bind only to loopback interface)
$inet_socket_bind = '127.0.0.1';
(Forward to Postfix on port 10025)
$forward_method = 'smtp:127.0.0.1:10025';
$notify_method = $forward_method;       
(Define the account to send virus alert emails)
$virus_admin = "virusalert\@$mydomain";
(Always add spam headers)
$sa_tag_level_deflt  = -100; 
(Add spam detected header aka X-Spam-Status: Yes)
$sa_tag2_level_deflt = 5; 
(Trigger evasive action at this spam level)
$sa_kill_level_deflt = $sa_tag2_level_deflt;
(Do not send delivery status notification to sender.  It does not affect 
delivery of spam to recipient. To do that, use the kill_level)
$sa_dsn_cutoff_level = 10;
Don't bounce messages left and right, quarantine
instead
$final_virus_destiny      = D_DISCARD;  # (defaults to D_DISCARD)
$final_banned_destiny     = D_DISCARD;  # (defaults to D_BOUNCE)
$final_spam_destiny       = D_DISCARD;  # (defaults to D_BOUNCE)

Note: With this line $sa_tag2_level_deflt = 5; you set the Spamassassin spam score to 5. This might be a bit low. As you might have noticed the Amavisd-new default is 6.3. If you don't want to see a single spam mail in your mail folder choose 5, but if you don't want to deal with false positives choose 6.3.

Create a quarantine directory for the virus mails as we don't want these delivered to our users.

Code Listing 2.8: Create a quarantine directory for the virus mails

# mkdir /var/amavis/virusmails
# chown amavis:amavis /var/amavis/virusmails
# chmod 750 /var/amavis/virusmails

Note: Amavisd-new offers finer policy tuning by using policy banks.

Configuring ClamAV

As virus scanner we use ClamAV as it has a fine detection rate comparable with commercial offerings, it is very fast and it is Open Source Software. We love log files, so make clamd log using syslog and turn on verbose logging. Also do not run clamd as root. Now edit /etc/clamd.conf

Code Listing 2.9: Edit /etc/clamd.conf

(Verbose logging with syslog)
LogSyslog
LogVerbose
LogFacility LOG_MAIL
(Change pid file location) 
PidFile /var/run/amavis/clamd.pid
(Set the clamav socket) 
LocalSocket /var/amavis/clamd
(Close the connection when this limit is exceeded)
StreamMaxLength 10M
(Don't run clamd as root)
User amavis
(Newer versions require you to uncomment this)
ScanMail
ScanArchive

Note: Also remember to remove the Example directive to make ClamAV work

ClamAV comes with the freshclam deamon dedicated to periodical checks of virus signature updates. Instead of updating virus signatures twice a day we will make freshclam update virus signatures every two hours.

Code Listing 2.10: Edit /etc/freshclam.conf

(Syslog logging)
LogSyslog
(Verbose logging)
LogVerbose
(Explicitly drop root privileges)
DatabaseOwner clamav
(Check for updates every two hours. That is the official recommendation)
Checks 12
(Use the mirror closest to you. Replace XY with your country code
DatabaseMirror db.XY.clamav.net

Start clamd with freshclam using the init scripts by modifying /etc/conf.d/clamd.

Code Listing 2.11: Modifying /etc/conf.d/clamd

START_CLAMD=yes
FRESHCLAM_OPTS="-d"

At last modify amavisd.conf with the new location of the socket.

Code Listing 2.12: Modifying /etc/amavisd.conf

(Uncomment the clamav scanner and modify socket location)
['ClamAV-clamd',
\&ask_daemon, ["CONTSCAN {}\n", "/var/amavis/clamd"],
  qr/\bOK$/, qr/\bFOUND$/,
  qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],

Warning: Do NOT modify the $unix_socketname unless you know what you're doing.

Configuring Vipul's Razor

Razor2 is a collaborative and distributed spam checksum network. Install it with emerge razor and create the needed configuration files. Do this as user amavis by running su - amavis followed razor-admin -create.

Code Listing 2.13: Creating the required configuration files

# emerge razor

(Temporarily set amavis' shell to bash)
# usermod -s /bin/bash amavis
# su - amavis
$ razor-admin -create
$ exit

(Reset the shell to /bin/false)
# usermod -s /bin/false amavis

Configuring Distributed Checksum Clearinghouse (dcc)

Like Razor2, dcc is a collaborative and distributed spam checksum network. Its philosopy is to count the number of recipients of a given mail identifying each mail with a fuzzy checksum.

Code Listing 2.14: Installing DCC

# emerge dcc

Configuring Spamassassin

Amavis is using the Spamassassin Perl libraries directly so there is no need to start the service. Also this creates some confusion about the configuration as some Spamassassin settings are configured in /etc/mail/spamassassin/local.cf and overridden by options in /etc/amavisd.conf.

Code Listing 2.15: Create /etc/mail/spamassassin/local.cf

# Enable the Bayes system
use_bayes               1

# Enable all network checks
skip_rbl_checks         0

# Mail using languages used in these country codes will not be marked
# as being possibly spam in a foreign language.
# - danish english norwegian swedish
ok_languages            da en no sv

# Mail using locales used in these country codes will not be marked
# as being possibly spam in a foreign language.
ok_locales              en

# Use a sensible bayes path
bayes_path              /var/amavis/.spamassassin/bayes

Note: With Spamassassin version 3.1 you have to enable DCC, Razor2 by uncommenting the corresponding lines in v310.pre.

Note: You can find inspiration for your local.cf file by trying the SpamAssassin Configuration Generator.

Note: You might also want to switch the ok_languages and ok_locales.

3. Every good rule has good exceptions as well

Once mail really starts passing through this mail gateway you will probably discover that the above setup is not perfect. Maybe some of your customers like to receive mails that others wouldn't. You can whitelist/blacklist envelope senders quite easily. Uncomment the following line in amavisd.conf.

Code Listing 3.1: Modifying amavisd.conf to do sitewide scoring

read_hash("/var/amavis/sender_scores_sitewide"),

In the sender_scores_sitewide file you put complete email addresses or just the domian parts and then note a positive/negative score to add to the spam score.

Code Listing 3.2: whitelist_sender example

(Whitelist all emails from the specific email address)
postmaster@example.net                -3.0
(Whitelist all emails from the example.net excluding subdomains) 
.example.net                          1.0

Note: See /etc/amavisd.conf for more examples.

Note: Placing these addresses outside amavisd.conf is a cleaner and safer solution.

Note: Alternatively it can be done in Spamassassin's configuration file /etc/mail/spamassassin/local.cf but I think it is cleaner to do it in /etc/amavisd.conf.

Note: In a later chapter I will show how to implement per-user policies using MySQL.

While waiting for a better method you can add the following to amavisd.conf to bypass spam checks for postmaster and abuse mailboxes.

Code Listing 3.3: By pass spam filters for all postmaster and abuse mails

map { $bypass_spam_checks{lc($_)}=1 } (qw(
        postmaster@
        abuse@
));

Important: While we are at it we should never automatically discard mails to the postmaster or the abuse accounts. See RFC 2142 MAILBOX NAMES FOR COMMON SERVICES, ROLES AND FUNCTIONS. Otherwise your domains might end up listed in some of the evil lists over at rfc-ignorant.org.

4. Adding more rules

If you want to use more rules provided by the SARE Ninjas over at the SpamAssassin Rules Emporium you can easily add and update them using the sa-update mechanism included in Spamassassin.

A brief guide to using SARE rulesets with sa-update can be found here.

5. Testing and finishing up

Testing the setup

Now before you start freshclam you can manually verify that it works.

Code Listing 5.1: Testing freshclam

# freshclam
ClamAV update process started at Sun May  2 09:13:41 2004
Reading CVD header (main.cvd): OK
Downloading main.cvd [*]
main.cvd updated (version: 22, sigs: 20229, f-level: 1, builder: tkojm)
Reading CVD header (daily.cvd): OK
Downloading daily.cvd [*]
daily.cvd updated (version: 298, sigs: 1141, f-level: 2, builder: diego)
Database updated (21370 signatures) from database.clamav.net (193.1.219.100).

Now you have updated virus definitions and you know that freshclam.conf is working properly.

Test freshclam and amavisd from the cli and amavisd testmails. Start clamd and amavis with the following commands:

Code Listing 5.2: Start amavisd and clamd and reload postfix configuration

# /etc/init.d/clamd start
# /etc/init.d/amavisd start
# /etc/init.d/postfix reload

If everything went well postfix should now be listening for mails on port 25 and for reinjected mails on port 10024. To verify this check your log file.

Code Listing 5.3: Checking log files

# tail -f /var/log/mail.log

Note: Depending on your log settings the correct path might be /var/log/messages.

Now if no strange messages appear in the log file it is time for a new test.

Use netcat to manually connect to amavisd on port 10024 and postfix on port 10025.

Note: Netcat can be used as an advanced replacement for telnet. Install it with emerge netcat.

Note: For some unknown reason you can not complete a manual mail injection to amavisd with netcat. Use telnet instead.

Code Listing 5.4: Manually checking that amavisd and postfix are listning to the new ports

 
# nc localhost 10024
(Amavis working)
220 [127.0.0.1] ESMTP amavisd-new service ready
nc localhost 10025
(Postfix reinject working)
220 example.com ESMTP Postfix

Note: If you want to see the complete output from amavisd-new start amavisd debug-sa as the amavis user and send a mail. For this to work you might have to change the default shell in /etc/passwd.

Add amavisd and clamd to the default runlevel.

Code Listing 5.5: Add amavisd and clamd to the default runlevel

# rc-update add clamd default
# rc-update add amavisd default

Note: We do not add spamd to the default runlevel as amavisd uses the Spamassassin Perl libraries directly.

Note: You might notice Net::Server: Couldn't POSIX::setuid to ... [] lines in your log. According to amavis chroot README, if the process UID remains 0 (root), the program will terminate, otherwise you can consider the message just as informative. This is because POSIX::setuid() returns a string 0 but true.

Important: If you enabled login for amavis remember to set back the login shell in /etc/passwd to /bin/false.

6. Autolearning and sidelining emails

Creating the spamtrap user

Create the spamtrap account and directories.

Code Listing 6.1: Create spamtrap account

# useradd -m spamtrap
# maildirmake /home/spamtrap/.maildir
# chown -R spamtrap:mailusers /home/spamtrap/.maildir
(Give the spamtrap user a sensible password)
# passwd spamtrap

If you manually want to check some of the mails to ensure that you have no false positives you can use the following procmail recipe to sideline spam found into different mail folders.

Creating .procmailrc

Code Listing 6.2: Creating /home/spamtrap/.procmailrc

#Set some default variables
MAILDIR=$HOME/.maildir

SPAM_FOLDER=$MAILDIR/.spam-found/

LIKELY_SPAM_FOLDER=$MAILDIR/.likely-spam-found/

#Sort mails with a spamscore of 7+ to the spamfolder
:0:
* ^X-Spam-Status: Yes
* ^X-Spam-Level: \*\*\*\*\*\*\*
$SPAM_FOLDER

#Sort mail with a spamscore between 5-7 to the likely spam folder
:0:
* ^X-Spam-Status: Yes
$LIKELY_SPAM_FOLDER

#Sort all other mails to the inbox
:0
*
./

Warning: If your mail server is going to receive a lot of mail you should NOT use the likely-spam recipe. Instead set $sa_tag2_level_deflt high enough to avoid false positives and filter it directly to $SPAM_FOLDER.

Note: If you haven't already installed procmail do it with emerge procmail.

Now make sure that Postfix uses procmail to deliver mail.

Code Listing 6.3: Modifying /etc/postfix/main.cf

mailbox_command = /usr/bin/procmail -a "DOMAIN"

Create mailfolders

Now we will create shared folders for ham and spam.

Code Listing 6.4: Create the necessary mailfolders

# maildirmake /var/amavis/.maildir
# maildirmake -S /var/amavis/.maildir/Bayes
# maildirmake -s write -f spam /var/amavis/.maildir/Bayes
# maildirmake -s write -f ham /var/amavis/.maildir/Bayes
# maildirmake -s write -f redeliver /var/amavis/.maildir/Bayes

Amavisd-new needs to be able to read these files as well as all mailusers. Therefore we add all the relevant users to the mailuser group along with amavis.

Code Listing 6.5: Setting the proper permissions

# groupadd mailusers
# usermod -G mailusers spamtrap
# chown -R amavis:mailusers /var/amavis/.maildir/
# chown amavis:mailusers /var/amavis/
# chmod -R 1733 /var/amavis/.maildir/Bayes/
# chmod g+rx /var/amavis/.maildir/
# chmod g+rx /var/amavis/.maildir/Bayes/

Warning: This grants members of the mailusers groups access to amavis mail.

This makes the spam and ham folders writable but not readable. This way users can safely submit their ham without anyone else being able to read it.

Then run the following command as the spamtrap user:

Code Listing 6.6: Adding the shared folders to the users mailfolder

$ maildirmake --add Bayes=/var/amavis/.maildir/Bayes $HOME/.maildir

Note: We have to give the group read permissions on the Bayes folder in order for the mail client to be able to see the subdirectories used by IMAP.

Adding cron jobs

Now run crontab -u amavis -e to edit the amavis crontab to enable automatic learning of the Bayes filter every hour.

Code Listing 6.7: amavis crontab

#Auto learn
0 * * * *          /usr/bin/sa-learn --spam /var/amavis/.maildir/Bayes/.spam/{cur,new} \
                    > /dev/null 2>&1 
0 * * * *          /usr/bin/sa-learn --ham /var/amavis/.maildir/Bayes/.ham/{cur,new} > \
                   /dev/null 2>&1 

Note: amavis has to be a member of the cron group to run crons.

Note: It seems like the shared maildir folders will make sa-learn examine all messages twice. This should not be a problem. The output will also show that the maximum of messages learned from is half or less than the messages examined.

Modifying amavisd.conf

Now modify amavis to redirect spam emails to the spamtrap account and keep spamheaders.

Code Listing 6.8: Modifying /etc/amavisd.conf

(Define the account to send virus spam emails)
$spam_quarantine_to = "spamtrap\@$myhostname";

Redelivering false positives

If you set the spam score very low like we do you will probably have some false positives. These are filtered into the folder likely-spam. These are manually reviewed and any false positive is moved to the redeliver mailfolder. From there it is first fed through sa-learn --ham and then redelivered with all headers intact using a patched version of smtpclient by Ralf S. Engelschall.

The original version 1.0.0 of smtpclient is already in Portage however to keep all headers intact we use a modified version. Here is how you install the revised version:

Code Listing 6.9: Installing revised smtpclient

(Switch to your portage OVERLAY)
# wget http://home.coming.dk/files/smtpclient.tar.gz
# tar xzf smtpclient.tar.gz
# echo "mail-client/smtpclient    ~x86" >> /etc/portage/package.keywords
# echo "mail-client/smtpclient    fullheaders" >> /etc/portage/package.use
# emerge smtpclient

Check for mails in the redeliver folder every minute using cron.

Code Listing 6.10: amavis crontab

#Redeliver false positives
* * * * *          find /var/amavis/.maildir/Bayes/.redeliver/cur/ -type f -name \
                   "[0-9]*" -exec cp {} /var/amavis/.maildir/Bayes/.ham/cur/ \; \
                   && find /var/amavis/.maildir/Bayes/.redeliver/cur/ -type f \
                   -name "[0-9]*" -exec /usr/local/bin/redeliver.pl {} \;

Now we only have to copy the redeliver.pl file to /usr/local/bin/. Download it or use the version below.

Code Listing 6.11: redeliver.pl

#!/usr/bin/perl -w

# Redelivers mail using a modified version of smtpclient
# By: Jens Hilligsoe <gentoo@hilli.dk>

use strict;

if(!($#ARGV == 0)) {
        die "Usage:\n$0 maildir_mail\n";
}

my $mail = $ARGV[0];
my $to = "";
my $from = "";

sub prunefile ( $ );

# Retrieve To and From envelope adresses
open (MAIL, $mail) or die "Could not open $mail: $?\n";
while(<MAIL>) {
    if(($to eq "") || ($from eq "")) {
        chop;
        (my $key, my $value) = split (/:/);
        if($key eq "X-Envelope-To") {
            $to = $value;
            $to =~ s/[\<\>,]//g; # Remove "<", ">" and ","
            $to =~ s/^\s+|\s+$//g; #Remove whitespace before and after
        }
        if($key eq "X-Envelope-From") {
            $from = $value;
            $from =~ s/[\<\>,]//g;
            $from =~ s/^\s+|\s+$//g;
            if($from eq "") {
                $from = "postmaster";
            }
        }
    }
}

if($to eq "") {
    prunefile($ARGV[0]); # Just nuke it if to is empty
} else {
    my $redelivercmd = "cat $ARGV[0] | smtpclient -F -S 127.0.0.1 -P 10025 -f $from $to";
    unless (system($redelivercmd) == 0 ) {
        die "Unable to redeliver: $?";
    }
    prunefile($ARGV[0]); # Clean up
}

sub prunefile ( $ ) {
    my ($file) = @_;
    unless (unlink $file) {
        die "Unable to remove mail: $?";
    }
}

Cleaning up

We don't want to keep mail forever so we use tmpwatch to clean up regularily. Emerge it with emerge tmpwatch. Only root is able to run tmpwatch so we have to edit the root crontab.

Code Listing 6.12: Modifying root crontab

# Clean up
# Keep virusmails for a week (24*7 hours)
15 0 * * *      /usr/sbin/tmpwatch -c -f -d --quiet 168 /var/amavis/virusmails/
# Delete spam and ham learned after a week
15 0 * * *      /usr/sbin/tmpwatch -c -f -d --quiet 168 /var/amavis/.maildir/Bayes/

7. Greylisting

Introduction

Greylisting is one of the newer weapons in the spam fighting arsenal. As the name implies it is much like whitelisting and blacklisting. Each time an unknown mailserver tries to deliver mail the mail is rejected with a try again later message. This means that mail gets delayed but also that stupid spam bots that do not implement the RFC protocol will drop the attempt to deliver the spam and never retry. With time spam bots will probably adjust, however it will give other technologies more time to identify the spam.

Note: If your ISP blocks incoming traffic on port 25 and relays all mail to you through their own mail server greylisting will not work.

Postfix 2.1 come with a simple Perl greylisting policy server that implements such a scheme. However it suffers from unpredictable results when the partition holding the greylisting database run out of space. There exists an improved version that do not suffer this problem. First I will show how to install the builtin greylisting support that come with Postfix and then I will show how to configure the more robust replacement.

Note: There are other greylisting policy servers for Postfix around (such as Gld, which is in Portage, and SQLgrey). Some of them support database backends, auto whitelisting and other neat features.

Simple greylisting

Note: If you prefer to use the improved greylisting with postgrey you can safely skip this section.

We need the file greylist.pl but unfortunately the ebuild does not install it as default.

Code Listing 7.1: Getting greylist.pl

# cp /usr/portage/distfiles/postfix-your-version-here.tar.gz /root/
# tar xzf postfix-your-version-here.tar.gz
# cp postfix-2.1.0/examples/smtpd-policy/greylist.pl /usr/bin/

Now we have the file in place we need to create the directory to hold the greylisting database:

Code Listing 7.2: Creating directory for the greylisting database

# mkdir /var/mta
# chown nobody /var/mta

Warning: Do not create the greylisting database directory on a partition that might run out of space. While postfix can recover from no-space-left situations for the mail queue and mail box situations, this is not the case with the greylisting database. If the file becomes corrupted you may not be able to receive mail at all until you delete the file by hand.

Configuring greylisting

Now that we have all this ready all that is left is to add it to the postfix configuration. First we add the necessary information to the master.cf:

Code Listing 7.3: Modifying master.cf to use greylisting

policy-greylist  unix  -       n       n       -       -       spawn
   user=nobody argv=/usr/bin/perl /usr/bin/greylist.pl

The postfix spawn daemon normally kills its child processes after 1000 seconds but this is too short for the greylisting process so we have to increase the timelimit in main.cf:

Code Listing 7.4: Modifying main.cf to use greylisting

policy-greylist_time_limit = 3600
(Under smtpd_recipient_restrictions add:)
check_sender_access hash:/etc/postfix/sender_access
(Later on add:)
restriction_classes = greylist
greylist = check_policy_service unix:private/policy-greylist

Warning: Be sure to specify check_sender_access AFTER reject_unauth_destination or else your system could become an open mail relay.

Note: The greylist database gets polluted quickly with bogus addresses. It helps if you protect greylist lookups with other restrictions that reject unknown senders and/or recipients.

We don't want to use greylisting for all domains but only for those frequently abused by spammers. After all it will delay mail delivery. A list of frequently forged MAIL FROM domains can be found online. Add the domains you receive a lot of spam from to /etc/postfix/sender_access:

Code Listing 7.5: Format of sender_access

aol.com     greylist
hotmail.com greylist
bigfoot.com greylist

If you want a more extensive list:

Code Listing 7.6: Adding all domains to sender_access

# wget http://www.monkeys.com/anti-spam/filtering/sender-domain-validate.in
# cat sender-domain-validate.in | sort | awk {'print $1 "\t\t greylist"'} > /etc/postfix/sender_access

Now we only have to initialize the sender_access database:

Code Listing 7.7: Initialize sender_access

# postmap /etc/postfix/sender_access

Now the setup of simple greylisting is complete.

Warning: I tried this on one box handling thousands of mails daily and the results were almost a complete disaster. After four days the box was bogged down with hundreds of old greylist.pl processes.

Configuring improved greylisting with postgrey

You can install the enhanced greylisting policy server with a simple emerge:

Code Listing 7.8: Installing postgrey

# emerge postgrey

After installing postgrey we have to edit main.cf. Changes are almost exactly like the built in greylisting.

Code Listing 7.9: Modifying main.cf to use greylisting

(Under smtpd_recipient_restrictions add:)
check_sender_access hash:/etc/postfix/sender_access
(Later on add:)
smtpd_restriction_classes = greylist
greylist = check_policy_service inet:127.0.0.1:10030

Note: The Postfix SMTPD_POLICY_README only uses restriction_classes but that does not appear to work.

Note: If you want to greylist everything instead add check_policy_service inet:127.0.0.1:10030.

Finally, start the server and add it to the proper runlevel.

Code Listing 7.10: Starting postgrey

# /etc/init.d/postgrey start
# rc-update add postgrey default

Note: Some people like to get their mail fast and thus greylisting is worthless. However if you employ a backup mail server you can safely setup greylisting on that server. My limited experiences tell me that it can stop up to a third of the spam received.

8. SPF (Sender Policy Framework)

Introduction

SPF allows domain owners to state in their DNS records which IP addressess should be allowed to send mails from their domain. This will prevent spammers from spoofing the Return-Path.

Note: If your ISP blocks incoming traffic on port 25 and relays all mail to you through their own mail server SPF will not work.

First domain owners have to create a special TXT DNS record. Then an SPF-enabled MTA can read this and if the mail originates from a server that is not described in the SPF record the mail can be rejected. An example entry could look like this:

Code Listing 8.1: Example SPF record

example.com.  IN TXT  "v=spf1 a mx ptr -all"

The -all means to reject all mail by default but allow mail from the A(a), MX(mx) and PTR(ptr) DNS records. For more info consult further resources below.

Note: If you relay outgoing mail through your ISP you will have to add: include:yourisp.com.

Spamassassin 3.0 has support for SPF, however it is not enabled by default and the new policy daemon in Postfix supports SPF so let's install SPF support for Postfix.

Note: If you want to use SPF with Spamassassin instead simply emerge dev-perl/Mail-SPF-Query and restart Amavisd-new.

Preparations

First you have to install Postfix 2.1 as described above. When you have fetched the source grab the spf.pl with:

Code Listing 8.2: Installing spf.pl

# cp postfix-<version>/examples/smtpd-policy/spf.pl /usr/local/bin/

Note: The spf.pl coming with Postfix is slightly buggy so find and uncomment the following line: push @HANDLERS, "sender_permitted_from"; use Mail::SPF::Query;. Furthermore in about line 199 substitute comemnt with comment. Alternatively you can download a development version.

This Perl script also needs some Perl libraries that are not in portage but it is still quite simple to install them:

Code Listing 8.3: Installing the needed Perl libraries

# emerge Mail-SPF-Query Net-CIDR-Lite Sys-Hostname-Long

Now that we have everything in place all we need is to configure Postfix to use this new policy.

Code Listing 8.4: Modifying master.cf to use SPF

policy-spf  unix  -       n       n       -       -       spawn
   user=nobody argv=/usr/bin/perl /usr/local/bin/spf.pl

Now add the SPF check in main.cf. Properly configured SPF should do no harm so we could check SPF for all domains:

Code Listing 8.5: Modifying main.cf to use SPF

(Under smtpd_recipient_restrictions add:)
check_policy_service unix:private/policy-spf

Note: If you're experiencing problems with SPF, e.g. when using fetchmail, you might want to enable SPF for certain domains only.

9. Configuring amavisd-new to use MySQL

Configuring MySQL

Note: This has not been tested on versions higher than 2.2. Feedback is welcome :)

For large domains the default values you can set in amavisd.conf might not suit all users. If you configure amavisd-new with MySQL support you can have individual settings for users or groups of users.

Code Listing 9.1: Creating the MySQL database and user

# mysql -u root -p mysql
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 78 to server version: 4.0.18-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> create database maildb;
mysql> GRANT INSERT,UPDATE,DELETE,SELECT ON maildb.* TO 'mail'@'localhost' IDENTIFIED BY 'very_secret_password';
mysql> use maildb;

Now that the database is created we'll need to create the necessary tables. You can cut and paste the following into the mysql prompt:

Code Listing 9.2: MySQL table layout

CREATE TABLE users (
    id         int unsigned NOT NULL auto_increment,
    priority   int          NOT NULL DEFAULT '7',  -- 0 is low priority
    policy_id  int unsigned NOT NULL DEFAULT '1',
    email      varchar(255) NOT NULL,
    fullname   varchar(255) DEFAULT NULL,    -- not used by amavisd-new
    local      char(1),     -- Y/N  (optional field, see note further down)
    PRIMARY KEY (id),
    KEY email (email)
    );
CREATE UNIQUE INDEX users_idx_email ON users(email);

(any e-mail address, external or local, used as senders in wblist)
CREATE TABLE mailaddr (
   id         int unsigned NOT NULL auto_increment,
   priority   int          NOT NULL DEFAULT '7',  -- 0 is low priority
   email      varchar(255) NOT NULL,
   PRIMARY KEY (id),
   KEY email (email)
   );
CREATE UNIQUE INDEX mailaddr_idx_email ON mailaddr(email);

(-- per-recipient whitelist and/or blacklist,
-- puts sender and recipient in relation wb)
(white or blacklisted sender)
CREATE TABLE wblist (
   rid        int unsigned NOT NULL,     -- recipient: users.id
   sid        int unsigned NOT NULL,     -- sender:    mailaddr.id
   wb         char(1) NOT NULL, -- W or Y / B or N / space=neutral
   PRIMARY KEY (rid,sid)
   );
  
CREATE TABLE policy (
   id               int unsigned NOT NULL auto_increment,
   policy_name      varchar(32),     -- not used by amavisd-new
   virus_lover          char(1),     -- Y/N
   spam_lover           char(1),     -- Y/N  (optional field)
   banned_files_lover   char(1),     -- Y/N  (optional field)
   bad_header_lover     char(1),     -- Y/N  (optional field)
   bypass_virus_checks  char(1),     -- Y/N
   bypass_spam_checks   char(1),     -- Y/N
   bypass_banned_checks char(1),     -- Y/N  (optional field)
   bypass_header_checks char(1),     -- Y/N (optional field)
   spam_modifies_subj   char(1),     -- Y/N (optional field)
   spam_quarantine_to   varchar(64) DEFAULT NULL, -- (optional field)
   spam_tag_level  float,  -- higher score inserts spam info headers
   spam_tag2_level float DEFAULT NULL,  -- higher score inserts
               -- 'declared spam' info header fields 
   spam_kill_level float,  -- higher score activates evasive actions, e.g.
               -- reject/drop, quarantine, ...
               -- (subject to final_spam_destiny setting)
   PRIMARY KEY (id)
  );

Note: If you have problems using copy/paste you might have to copy this somewhere else and clean out the unneeded characters.

Note: Lookups trying to match email are done with raw (rfc2821-unquoted and unbracketed) addresses as a key, i.e.: John "Funny" Smith@example.com

Note: Lookups are performed in the following order: SQL, LDAP, hash, ACL, regexp, constant. The first that returns a definitive answer (not undef/NULL) stops the search.

If you wish to use whitelisting and blacklisting you must add the sender and receiver to mailadr after which you create the relation between the two e-mail addresses in wblist and state if it is whitelisting (W) or blacklisting (B).

Now that we have created the tables let's insert a test user and a test policy:

Code Listing 9.3: Create test user and test policy

INSERT INTO users
   SET
      id         =1,
      priority   =9,
      policy_id  =1,
      email      ="johndoe@example.com",
      fullname   ="John Doe",
      local      ="Y";

INSERT INTO policy
   SET
      id                     =1,
      policy_name            ="Test policy 1",
      virus_lover            ="N",
      spam_lover             ="N",
      banned_files_lover     ="N",
      bad_header_lover       ="N",
      bypass_virus_checks    ="N",
      bypass_spam_checks     ="N",
      bypass_banned_checks   ="N",
      bypass_header_checks   ="N",
      spam_modifies_subj     ="N",
      spam_quarantine_to     =NULL,
      spam_tag_level         =-50.0,
      spam_tag2_level        =7.0,
      spam_kill_level        =10.0;

Note: Copy this to somewhere else and adjust to suit your own environment.

Note: local should be set to Y otherwise the mail will not be scanned for spam.

This inserts a test user and a Test policy. Adjust these examples to fit your needs. Further explanation of the configuration names can be found in amavisd.conf.

Configuring amavisd to use MySQL

Now that MySQL is ready we need to tell amavis to use it:

Code Listing 9.4: Modifying amavisd.conf

@lookup_sql_dsn =
   ( ['DBI:mysql:maildb:host1', 'mail', 'very_secret_password']  );

(For clarity uncomment the default)
$sql_select_policy = 'SELECT *,users.id FROM users,policy'.
   ' WHERE (users.policy_id=policy.id) AND (users.email IN (%k))'.
   ' ORDER BY users.priority DESC';

(If you want sender white/blacklisting)
   $sql_select_white_black_list = 'SELECT wb FROM wblist,mailaddr'.
     ' WHERE (wblist.rid=?) AND (wblist.sid=mailaddr.id)'.
     '   AND (mailaddr.email IN (%k))'.
     ' ORDER BY mailaddr.priority DESC';

10. Configuring Spamassassin to use MySQL

As of Spamassassin 3.0 it is possible to store the Bayes and AWL data in a MySQL database. We will use MySQL as the backend as it can generally outperform other databases. Also, using MySQL for both sets of data makes system management much easier. Here I will show how to easily accomplish this.

First start out by creating the new MySQL user and then create the needed tables.

Code Listing 10.1: Creating the new MySQL database and user

# mysql -u root -p mysql
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 78 to server version: 4.0.18-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> create database dbname;
mysql> GRANT INSERT,UPDATE,DELETE,SELECT ON dbname.* TO 'dbuser'@'localhost' IDENTIFIED BY 'another_very_secret_password';
mysql> use dbname;

Now that the database is created we'll create the necessary tables. You can cut and paste the following into the mysql prompt:

Code Listing 10.2: MySQL table layout

      CREATE TABLE bayes_expire (
          id                    int(11)         NOT NULL default '0',
          runtime               int(11)         NOT NULL default '0',
          KEY bayes_expire_idx1 (id)
          ) TYPE=MyISAM;

      CREATE TABLE bayes_global_vars (
          variable              varchar(30)     NOT NULL default '',
          value                 varchar(200)    NOT NULL default '',
          PRIMARY KEY           (variable)
          ) TYPE=MyISAM;

      INSERT INTO bayes_global_vars VALUES ('VERSION','3');

      CREATE TABLE bayes_seen (
          id                    int(11)         NOT NULL default '0',
          msgid                 varchar(200) binary NOT NULL default '',
          flag                  char(1)         NOT NULL default '',
          PRIMARY KEY           (id,msgid)
          ) TYPE=MyISAM;

      CREATE TABLE bayes_token (
          id                    int(11)         NOT NULL default '0',
          token                 char(5)         NOT NULL default '',
          spam_count            int(11)         NOT NULL default '0',
          ham_count             int(11)         NOT NULL default '0',
          atime                 int(11)         NOT NULL default '0',
          PRIMARY KEY           (id, token),
	  INDEX                 (id, atime)
          ) TYPE=MyISAM;

      CREATE TABLE bayes_vars (
          id                    int(11)         NOT NULL AUTO_INCREMENT,
          username              varchar(200)    NOT NULL default '',
          spam_count            int(11)         NOT NULL default '0',
          ham_count             int(11)         NOT NULL default '0',
          token_count           int(11)         NOT NULL default '0',
          last_expire           int(11)         NOT NULL default '0',
          last_atime_delta      int(11)         NOT NULL default '0',
          last_expire_reduce    int(11)         NOT NULL default '0',
          oldest_token_age      int(11)         NOT NULL default '2147483647',
          newest_token_age      int(11)         NOT NULL default '0',
          PRIMARY KEY           (id),
          UNIQUE bayes_vars_idx1 (username)
          ) TYPE=MyISAM;
                        
      CREATE TABLE awl (
          username              varchar(100)    NOT NULL default '',
          email                 varchar(200)    NOT NULL default '',
          ip                    varchar(10)     NOT NULL default '',
          count                 int(11)         default '0',
          totscore              float           default '0',
          PRIMARY KEY           (username,email,ip)
          ) TYPE=MyISAM;

Important: The INSERT line is needed otherwise Spamassassin will not work.

Note: This is also available in the source tarball in the files awl_mysql.sql and bayes_mysql.sql.

Configuring Spamassassin to use the MySQL backend

If you have an old Bayes database in the DBM database and want to keep it follow these instructions:

Code Listing 10.3: Converting Bayes data from a DBM Database

su - amavis 
sa-learn --sync 
sa-learn --backup > backup.txt 
sa-learn --restore backup.txt 

Note: Note that the last step should only be performed after the MySQL database and secrets.cf have been updated.

Now give Spamassassin the required info:

Code Listing 10.4: Modifying /etc/mail/spamassassin/secrets.cf

(Tell Spamassassin to use MySQL for bayes data
bayes_store_module              Mail::SpamAssassin::BayesStore::SQL
bayes_sql_dsn                   DBI:mysql:sa_bayes:localhost:3306
bayes_sql_username              db_name
bayes_sql_password              another_very_secret_password

(Tell Spamassassin to use MySQL for AWL data
auto_whitelist_factory          Mail::SpamAssassin::SQLBasedAddrList
user_awl_dsn                    DBI:mysql:sa_bayes:localhost:3306
user_awl_sql_username           db_name
user_awl_sql_password           another_very_secret_password

Next, change its permissions for proper security:

Code Listing 10.5: Changing permissions

# chmod 400 /etc/mail/spamassassin/secrets.cf

Note: To create a very secret password use emerge app-admin/makepasswd and makepasswd -chars=8

Now all you have to do is /etc/init.d/amavisd restart.

11. Troubleshooting

Amavisd-new

To troubleshoot Amavisd-new start out by stopping it with /etc/init.d/amavisd stop and then start it manually in the foreground with amavisd debug and watch it for anomalies in the output.

Spamassassin

To troubleshoot Spamassassin you can filter an email through it with spamassassin -D < mail. To ensure that the headers are intact you can move it from another machine with IMAP.

Note: If you need to troubleshoot you have to enable login for the user amavis by changing the login shell in /etc/passwd to /bin/bash.

If you want you can make get the same information and more with Amavisd-new using amavisd debug-sa.

Getting help

If you need help a good place to go is the amavis-user mailing list. Before postting a question try searching the Amavis User mailing list archives. If you find no answer here you can subscribe to the Amavis User mailing list

If your question is specific to SpamAssassin, DCC, Razor, or Postfix, please refer to their respective home pages listed below.

12. Resources

For further information

General resources

Other howtos



Print

Updated August 2, 2007

Summary: This guide is step-by-step guide for installing spam fighting technologies for Postfix. Among them Amavisd-new using Spamassassin and ClamAV, greylisting and SPF.

Sune Kloppenborg Jeppesen
Author

Jens Hilligsøe
Contributor

Joshua Saddler
Editor

Donate to support our development efforts.

Gentoo Centric Hosting: vr.org

VR Hosted

Tek Alchemy

Tek Alchemy

SevenL.net

SevenL.net

Global Netoptex Inc.

Global Netoptex Inc.

Copyright 2001-2007 Gentoo Foundation, Inc. Questions, Comments? Contact us.
------------jNfx0zYw7l8tHath7zDxwo Content-Disposition: inline; filename=main.css Content-Type: text/css; name=main.css Content-Location: http://www.gentoo.org/css/main.css Content-Transfer-Encoding: 8bit BODY { color: black; background: white; font-family: sans-serif, Verdana, Arial, Helvetica; /* Waaaay too much complaints... really, people should learn how to fix their browser settings. */ font-size: 0.8em; padding:0; } .dochead { margin-top: 1.5em; font-size: 1.7em; font-weight: bold; } .chaphead { font-size: 1.3em; font-weight: bold; } .chapnum { font-size: 0.85em; } .secthead { font-size: 1.1em; color: #5a3aca; background: white; font-weight: bold; font-family: sans-serif, Verdana, Arial, Helvetica; } .subsecthead { color: #7a5ada; background: white; font-size: 1.0em; font-weight: bold; font-family: sans-serif, Verdana, Arial, Helvetica; } a.highlight:link { color: #00ff00; text-decoration: none; } a.highlight:visited { color: #00ff00; text-decoration: none; } a.highlight:hover { color: #00ff00; text-decoration: underline; } a.highlight:active { color: #00ff00; text-decoration: underline; } a.menulink:link { color: #a0a0f0; text-decoration: none; } a.menulink:visited { color: #a0a0f0; text-decoration: none; } a.menulink:hover { color: #00ff00; text-decoration: underline; } a.menulink:active { color: #00ff00; text-decoration: underline; } a.altlink:link { color: #7a5ada; text-decoration: none; } a.altlink:visited { color: #5a3aba; text-decoration: none; } a.altlink:hover { color: #7a5ada; text-decoration: underline; } a.altlink:active { color: #7a5ada; text-decoration: underline; } a:link { color: #0000ff; } a:visited { color: #52188c; } a img {border:none; text-decoration:none; vertical-align:text-bottom;} .menu { font-size: 1.0em; font-weight: bold; font-family: sans-serif, Verdana, Arial, Helvetica; color: #ffffff; padding-left: 1.0em; padding-right: 1.0em; padding-top: 0.5em; padding-bottom: 0.5em; margin-bottom: 0; line-height:1.6em; } li {margin-bottom: 5px;} ol,ul {margin-top: 5px;} .altmenu { font-size: 0.85em; font-weight: bold; font-family: sans-serif, Verdana, Arial, Helvetica; color: #000000; padding-left: 1.0em; padding-right: 1.0em; line-height:1.4em; margin-top:0; margin-bottom:0; } .alttext { font-size: 0.85em; font-family: sans-serif, Verdana, Arial, Helvetica; color: #000000; margin-top:0; margin-bottom:0; } .infotab { padding: 0.5em; margin-top: 1.0em; margin-left: 1.0em; margin-bottom: 1.0em; } .codetitle { font-size: 0.9em; font-family: sans-serif, Verdana, Arial, Helvetica; padding: 0.25em; margin-left: 1.0em; margin-top: 0; margin-bottom: 0; color: #ffffff; font-weight: bold; } .infohead { font-size: 0.80em; font-family: sans-serif, Verdana, Arial, Helvetica; /* padding: 0.25em; */ padding-top: 0.2em; padding-bottom: 0.2em; padding-left: 1.0em; padding-right: 1.0em; margin-left: 1.0em; color: #ffffff; background-color: #7a5ada; font-weight: bold; } .infosub { margin-top: 0.25em; margin-bottom: 0.15em; margin-left: 0em; margin-right: 0.5em; padding: 0em; font-weight: bold; } .infolist { margin-top: 0.05em; margin-bottom: 0.05em; margin-left: 1.0em; margin-right: 0.5em; padding: 0em; padding-top: 0.3em; } .infogfx { padding: 0em; } .infotext { font-size: 0.85em; font-family: sans-serif, Verdana, Arial, Helvetica; color: #320f61; margin-left: 1.5em; margin-right: 1.5em; } /* .chaphead { margin: 1.2em 14% 0.5em 3%; font-size: 1.6em; font-weight: bold; } */ .copyright { margin-top: 2em; margin-left: 2em; margin-right: 2em; margin-bottom: 0.4em; font-size: 0.85em; font-family: sans-serif, Verdana, Arial, Helvetica; text-align: center; color: #404040; } .copyright a:link, .copyright a:visited { text-decoration: underline; color: #404040; } .copyright a:hover { text-decoration: underline; color: #4040f0; } .subhead { font-family: sans-serif, Verdana, Arial, Helvetica; font-size: 1.2em; font-weight: bold; /*margin: 0.5em 0% 0.5em 0%;*/ } .content { /*padding: 3em;*/ padding-top: 0em; padding-left: 1.0em; padding-right: 1.0em; font-family: sans-serif, Verdana, Arial, Helvetica; font-size: 1em; } .ntable { padding: 0em; margin-top: 0.5em; margin-bottom: 0.5em; } .ncontent { /*content with no padding, for an ugly Netscape 4.7 compatibility hack*/ padding: 0em; margin-top: 0.5em; margin-bottom: 0.5em; font-family: sans-serif, Verdana, Arial, Helvetica; font-size: 0.9em; } pre { margin-top: 0; margin-bottom: 0; padding: 0.5em; font-family: monospace, "Courier New"; color: #000000; font-size: 0.9em; overflow: auto; } .news { padding-left: 1.0em; padding-right: 1.0em; color: black; background-color: white; font-family: sans-serif, Verdana, Arial, Helvetica; font-size: 1em; text-align: justify; margin:10px; } .newsicon { float: left; margin-right: 12px; margin-bottom: 8px; } .newshead { background-color: #7a5ada; padding-top: 0.4em; padding-bottom: 0.4em; padding-left: 1.0em; padding-right: 1.0em; color: white; text-align: left; clear:both; } .newsitem { text-align: justify; } .spacer { clear: both; } /* Colour coding inside
 */
.code-input      {color:#0000c8;}
.code-comment    {color:#d80000;}
.code-constant   {color:#F000F0;}
.code-identifier {color:#209090;}
.code-statement  {color:#982424;}
.code-variable   {color:#b89b1c;}
.code-keyword    {color:#0C680C;}


.code {
	font-family: monospace, "Courier New";
	color: #0000c8;
	font-size: 1.0em;
}

.path {
	font-family: monospace, "Courier New";
	font-size: 1.0em;
}

.emphasis {
	font-style: italic;
}

.missing-value {
	font-style: italic;
  font-weight: lighter;
  text-decoration: line-through;
  color: #A06060;
}

P.note {
  margin-top: 0;
  margin-bottom: 0;
	padding: 0.5em;
}

P.impo {
  margin-top: 0;
	padding: 0.5em;
}

P.warn {
  margin-top: 0;
	padding: 0.5em;
}

P.epigraph {
  margin: 1em 15% 1em 4em;
  font-style: italic;
  text-align: justify;
}
P.epigraph BR { line-height:0.8em;}
SPAN.episig {
  font-style: normal;
}

SUP, SUB {font-size:xx-small;}

.contentbox {
	margin-left: 5%;
	margin-right: 5%;
	margin-top: 2%;
	margin-bottom: 2%;
	padding: 0.8em;
}

.logobg {
	background: #45347b;
}

.top {
	background: black;
	font-family: sans-serif, Verdana, Arial, Helvetica;
	font-size: 0.85em;
	color: #c0c0c0;
	padding: 0em;
	margin: 0em;
}

.topnews {
	background: #5f4e4e;
	color: white;
}

.tophead {
	color: #a7f3fe;
	font-weight: bold;
	margin: 0em;
}

.tableinfo {
	padding-left: 1.0em;
	padding-right: 1.0em;
	padding-top: 0.2em;
	padding-bottom: 0.2em;
	font-size: 0.75em; 
	background: #ddddff;
	font-weight: bold; 
	font-family: sans-serif, Verdana, Arial, Helvetica;
  vertical-align: top;
}

/*
UL {
	margin: 0em;
	padding-top: 0em;
	padding-bottom: 1em;
	padding-left: 1em;
	padding-right: 0em;
}

LI {
	padding-bottom: 0.5em;
}
*/
.toptext {
	color: #ffffff;
	margin-bottom: 7px;
}
.toptext a:hover {
        color: #00ff00;
}

.toptext a:link {
	font-style: normal;
  color: #00dd00;
}

.bartext {
	color: #40ff00;
	font-family: sans-serif, Verdana, Arial, Helvetica;
	font-size: 0.8em;
	padding: 0em;
}
.docs-index {
	margin: 0em;
	margin-left: 20px;
  font-family: sans-serif, Verdana, Arial, Helvetica;
	line-height: 1.25em; 
/*	border: 3px coral solid;*/
	border: 3px white solid;
}
/*this works fine in IE, but not in any other browser!, yet it's perfectly valid */
.docs-index .emphasis {
        font-style: normal;
        font-weight: bold;
}

.topsep {
  padding-top: 0.5em;
  border-top: 1px black solid;
}

.topsep img {margin-bottom:8px;}
.topsep form {margin-bottom:0;}

#devlinks {font-size:smaller;}
#devlinks tr {padding:0; margin:0; border:none;}
#devlinks td {margin:0; padding:0 4px 0 0; border:none;}
#devlinks a {text-decoration:none;}
#devlinks a:hover {color:#c02020;}


td.leftmenu p.altmenu a.altlink:before {content:"\2022\A0"; color:#301060;}
/*
Escaped arrow does not work with konqueror
td.leftmenu p.altmenu a.altlink:before {content:"\2023\20"; color:#301060;}

Any UTF-8 encoded character does not work with konqueror
td.leftmenu p.altmenu a.altlink:before {content:"‣ "; color:#301060;}
*/

------------jNfx0zYw7l8tHath7zDxwo
Content-Disposition: inline; filename=favicon.ico
Content-Type: image/x-icon; name=favicon.ico
Content-Location: http://www.gentoo.org/favicon.ico
Content-Transfer-Encoding: Base64

AAABAAEAEBAAAAEACABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADeXXsA3l2DAN5ZewDNZXsA5pmsAO6ytADmoaQA/6G0AMVV
agDFUGoAvVBqALRMYgC0TGoArEhiAKRIYgDNXXsA3qq0AP///wD/7vYA/97mAP/O
1QD/vr0A9qGsAMVZcwCsRGIA3mF7AOa6vQD/8vYA/97eAP/KzQD2paQAzWmDANWZ
rAD/9vYA7rq9AP/S1QD/xs0A/7q9AP+ytAC9XWoAtEhiAO6+xQD2qqwAnJGUAIt9
gwD/1tUA/77FAN6FlAC0UGoA7mGDAJx1ewD2ys0A5p2kAP/GxQD/qqwArExiAOZh
gwCkZXsAnIGLALSBgwD20tUA//r/AP/m7gD/1t4A/8LFAP/CzQDVYXsApH2LAIN5
ewD/9v8A/+ruAP/a3gD/ytUAtHl7AOZdewDFZXsA/9rVAL2JgwBiLDkA1Vl7AOaF
nAD/4uYAxZWUAJxtewCUPFIA7pmsAP/OzQDFmZwAajhBAKREWgDFVXMAzVVzAP/O
3gDFiYsAnHFzAHM4SgDFgZQA/+r2AOaurADFnZwAi21zAIM4UgDVXXsAzVlzAMWV
nAC0fXsAvY2UAKSNlABqNEEAnEBaAINdagCkiYsAvZWUAL2ZlACslZQAlImUAINV
YgCLPFIAvUxqAHM8SgCchZQAnHmDAGosOQCLOFIAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdll3eHl6ew1PAABmT1tbCApu
b3BxcnN0dXYAAABnWwgLaB0tLS1pamtsbWcAZ1taYD9RRmFhRkViY2RlKGZPZ1tc
RT0RPRsSPhFdXl8oT1sCVRERERERRRtGG1ZXWFlaTwBQERERERFFRlFREVJTVABK
MUs9PRERPUYTR0wRTU5CAA1DREURERFGRyNINRFJODk6Ozw9ERE9Pj8dQEAuQTEy
MxEREREGNBsUNSUlNjcAKREREREqKywtHS4lJi8wACARERERISIhIyQlJicNKAAZ
GhEREREbHB0VHh8MCw0AAA8QERESExQVFhcKCw0YAAEBAgMEBQYHCAkKCwwNDgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAA=

------------jNfx0zYw7l8tHath7zDxwo
Content-Disposition: inline; filename=gtop-www.jpg
Content-Type: image/jpeg; name=gtop-www.jpg
Content-Location: http://www.gentoo.org/images/gtop-www.jpg
Content-Transfer-Encoding: Base64

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
8zyxXUVd/wCDb3lu/St3lvf+P//Z
------------jNfx0zYw7l8tHath7zDxwo
Content-Disposition: inline; filename=x-click-but21.gif
Content-Type: image/gif; name=x-click-but21.gif
Content-Location: http://images.paypal.com/images/x-click-but21.gif
Content-Transfer-Encoding: Base64

R0lGODlhbgAXAMQfAKurq09PT9PT0319fe7u7vX19WRkZL6+vvPz883NzeLi4oqK
iv7+/qGhoefn5/v7+5WVldnZ2aWlpRgYGJubmzs7O8bGxoSEhJ6envn5+dzc3N/f
3+vr6wAAAP///////yH5BAEAAB8ALAAAAABuABcAAAX/4CeOZGmeaKqubOuiSQMt
y2XfeK7vfO//wOBtMDAYKKUDJKHYaJ7QqHRKrVqv2KxWGhFgJobRZiHwmM/otHrN
brvf8Phb0jmIMBS5fs/v+9EPFQEiBhZ/h4iJew8FEBMiAWV/HR2KlpdnjAQAHZCS
Z5RplWuhiJSnl6UeqnKanCIVCaKqrGi1faW3frp6Dwgcrx+xs6Goq8a5o6ejoMZm
tMrOy8zLz9XQyc6+wJ3CsrbHlbXF4tHWpNTpx+fr7c3s7cnxo9vBw+Cr7NPh6dXN
0urkzbOGTN1AgfW63QM16yBAdPCgDXSoz6A8hL/sfWNoq9w5chHfuRNI0lxJkRfN
u3lICGvjs4b8PM4b5y9mR4kzsY0syM6XA42YggrdwyADAgd0REwwNLSp0zQMGBQg
oCDphwkNPDB4kKGr169gw4odS7as2bNowRaY6kDDhUcfAlQogIAAh7t48+rdy7ev
37+AAwve60BBF0EiDnSAUHiD48eQI0ueTLmy5cuYM0fW0CXBgDojDHQw0KABhtOo
U6tezbq169ewY8tWTYGC6DAkBkyYxru379/AgwsfTnzahAEvkitfzrw5ihAAOw==

------------jNfx0zYw7l8tHath7zDxwo
Content-Disposition: inline; filename=vr-ad.png
Content-Type: image/png; name=vr-ad.png
Content-Location: http://www.gentoo.org/images/vr-ad.png
Content-Transfer-Encoding: Base64

iVBORw0KGgoAAAANSUhEUgAAAH0AAACQCAMAAAAShJRLAAAAGXRFWHRTb2Z0d2Fy
ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYBQTFRF09XbDBU2EyJDHStMbW1ulZmq
4+ToUll0pam3KzlaIzJThIqcS1JtLjVWOkFdHiVFO0Rhz9DYIi9QfYOXJi1Oi5Ki
LDJTFBw9yszUTldzbHKIs7bBtrnEWWF6KTBRIShJMDhZxcjQLDZYMUBiGiFBQ0pl
MD5gycrSZGyFu77JFB9AwcTOvcDLEhk5zM3VuLvGd32SOD9dMDZYER0+GidILzxe
cXiNRUxp9fb3naKwsbO+QEZiLDNUICxOHCNEMzlVJzRWSE9r8vL0FBo8MTdTGyJC
Jy9P8PHz2NnfGCVGICdHYGiANDlaNT1eq6+8Exo6KDJTNjxYHyZGHy5PKjBNMDpb
ycvUiY2eLjRRMjxZGSJDIypKPUxrISpLDhs8mZ6uT1RvPkpnxMfPGB4/EBg5SE1n
JCtMHShJIyhHJSxMr7PAHSRENDtcCA4vLDhVKzRUCxEyOzs7paWlwMDAAAAAyszT
DxY3zM3Oh4eIJzdYy8/X8PDwFRs8FBo76+vr////0u7NcgAAHEJJREFUeNrEnItf
2lrW97m8CFIh3BEQIhZvtKgoylgkgpWosRXFVlo5XmoolEPn6DwzZR47MPnX39/a
CRgv9fSc0+fTJYQQNd+stX577bWDreFvP9H+a/jbf36a/fd/DNj8LPvn/zP859//
87OM6P/4aUZ00++ZefjGlp8+fbrssU891WyKbPnabj40Hx5mdjI7yaWlUzJsTaal
pMl8aLdfX9uH7Ydk5kMPtoXrpimTMS39OLoZJ94x7eyAagQb4B1PoTA8XCgU7B5z
xj6gezyH18t2c9NTGP6B9KbdnkmaMktLpp2Mmfy7Hi4ceszmHZMpeWoq9OmH8P56
avh6eXm48EPp14fA4oFIF+iAeSdpQh6W6Gm/oR/iB+x2j6e5c5ce8vv9Ic+fynvm
cBgntQN8aM7gtxCE5GnfTAM6vdoPd3bu5907pJCN/Tm6mQgU6CUyQiaNTH/IhXlY
R/fYD02kEOMtug3kobhB8T5ML9qGLI/Qm9C8ace0NPD3dMeUNJmah/bCsE7z9Lgu
mE2Zndu+74IdwqvnG5HH9x+hu/zwKLmTdanewrmMx15Yhujt8NV8rc/79fChyZzP
3Mq7QVE+3CBX4orBj9d4/IN/SBmNDnu3cXWj3qdPw88V5esCoX85G1KGIr8welTx
2M2mnfmxJOJMwoLZPYeZZhPaU1XnGdDxC4Xh5WU9/VbCkYW4otjo6BZpYcNlYZo4
e/qEvSpPAN9me9u/aHTmnxnjGJE+hOSbmgYoGrfoFBJcm1lHDykKfP0Qh32gNx9M
XkWZAl3xzwCzMuJXlF93R37ZULY/TOFA6OkZvvUUPxRR6Uhn4frIYvevnilbYdPS
hX/pdEQ5tRiMxieGKT3d48lk7mhepYfIm5DpTDFYrVYFAlQUg3l4hVKu5h2uez12
LzmPsCPx2Gp0lBZz3G+qbkVPF7ZOTzW6ecg7tTEyrKN7mEJ2TKc6+hSLvCdkI3pc
DS+uR1EuzMMzN3Q4POOxz1AOkH7QvyqKRj9EpY0/OX1ygVArI6DvmKw4Gt14bikM
6KzO2zPQ/O0RN6Sqzq/Sh/xk1nt0fHvFY1+hoCMHoG8rG1rePRhx8SrRl0xK1Iwk
2HcVFPoj5dBcGPhOVbjQxJAwmfT0sELpUumIrLWvRR39+fByFB577HA4NPUMYZia
GeSdaT7u3/FPI7bK7vWoxX4YVTI7oaELy43qaDYaXsYMAJHcqzaKmnc7hG6IG+J6
+vAGvjXzNIKBhzDZpqaiOIDL2AipdPtwwWOHw5ZRDHElmvEOeQ5tlPfob8qIh+hm
NschEMusgBQerLTxKdI+7RkYPa/RvYw+RRe5cUZVJko//zWK8e4Bncx+5Df74xhp
SujUjPS5FGMkUj99MjRlp6CbNdVRYcZ4vDvLvA+F+hXHbrXerfOuXevy06mny9Ho
slrkpkIzIVbrPGxyy0DIS4NSu5RcMhqxTaLONwt9uoc9qc4nT793hp24mWWmqNL2
6VNapaXBRjMMhtGp0WhU6Ts0k5nVHmNZR/cU1D7E+Ofohw/SPZ4deElYnHoHIHvh
mnobe96TN+t8J8HtLO3sfF9nlfw+esZzfYiuJkNYOwRtp47KjDJvSqK78Ojybi4M
ezJ5tFgaPfnX6dRdDBMV7QVmFxR5yuzpaR2pX6qf3qJfP0VbhZP++wfS83Ya0JkM
NXKkvSV1rq/XSQig54meP8zn82pnlW9+m/7hMfqHcNj1gOpMTHWaGU9NS0x/NNtn
CgO6mQY+KcO0dJfuvTijPuPCFqbZ9cHOiug2xeC6n3d0JZi4EOs6PD41QljHTAUe
O37RQ27TJeIaCh5qPpLGf/+vRk/2+5stbMeUs9BWv7+yDUUH7IlH6XZSMo1wnLqZ
z3sK+wXE7LrgYUAzQm5ukv9ET9KII3oyeUP3UJk1bSkf3qPqTIZM799/wFxqHd7d
dQ1bZ4oTwx9mZp4u5x+mX3swuvMe+77dvk/maaKg7dBpT5MeoptVOnp9MyrBzvFd
Orn924zy3/cWJe4ZVfyK/wL1c3QZk3rIoKxOsCpbRbE1jPyS/SV7i54ntZNBTyqU
qY5yT6rL6+jL14WJwsTEPXpY2XbtKXuuVSX+3o1CHybfd0Mq3VZc8c74lb8Vbaz5
sFo1OqYX0M00vDMorKyZwkhLLnVIAqz4eUiX+D6uAJqn9dX+vgj6327RXYpS3Fai
oLvTbmWeTbHhEOgrH0APjXgjmNUWdPTlZVoTecDNm1HRTcQy1oElutHYMVJ/m8kU
BnSEgDqr4+Pk0l36vuuZ4lWGTCaL4na5qdUCfYXou8OjoA8pX9HcRHV579OZ5qG6
Opm6fsGkg9YSiwzIb/iGjppsXsJPMs2DPrAdl+uJYlDOTEm/ju4NfdhQvBPbyipa
mqkPD9KxaPMUqF9CkTneaaKOigXS/MQw1IeUQwvEJXrTvO9Jmo4z9+j7LlcRuvqQ
BH2U6Dg2i+xP/KpsoI09i/5N2d74Fj0/sZ+n6i0ywaPK56lxRVhPqc57MAabzSZJ
L79fyCSPd46TRKcZWKO/d7ne2y7GsBe+WHXtuVew5xpzr064bKNV76i3uPL8YsX2
dcRvGLtLz+zk4STg+ZMmTkzaS5Lm66dqpe3TKe/7yINnXyTV/UdHd7lcorqHBRje
NOmKnNnsB9cHZiOhUHbq6dt80Wq9S282sVRHq8gqO5mqOs1ufCfv95eHkZKJwn16
/i7d5ZwMMYuG/f4n4ezygL6MLx09bzYt6YBXp0ntHooJSd7X+55Xp97kbbpJAzK7
RT8PhfzPaZkTj2Q1+vKNDRfyTXQxedCTxk6HqX4pudNk9dazj8f+xCDviFE+s5Q8
Pl7q3PPdKT5Afz1xOfFkVrXnrofpTeS9CbUf43mSJ+mhnuxPFC4L0GI+T76bWXrw
XbsZw0tQ67yOnnY6L+/S087J3MRlCOCId+XJ3uryN+iZ/OW+h8k9Jooiq20Y8KQ/
zLGo8wRm9CaqzTGcv+f7b05n+vhm9DH6uHOyOHFJrhcnoBXXXfpb0PfJ9yb0jtdK
RjhOBoNJ6mlV+RnrV0ain4B+Qrb/Wx4BamZofg/e0E+cA+czTo3eQt7TE2egvwb9
t2WVvuI/O/Nm38JmFhZG9sOWqCscnnEdJ+vHu7u7k/VOJxn1Vr1FJsBodNcx4bXk
ms23u1VLNex6O7F/eTkxTnSd7xheTtcled90kjEJvp8Mnae9oK+GgH/79vV4fmTv
KP4cNgP62fPnC5b5sfDb+bEIqpNx5MWLF4B+tEUikRcvLMf1cjkSGbP+OjaWbUb3
xsbG5ucXkCKPz3fyT9X34KDUpgm6fkllp0/nSPPRZ4A92/O+ZvTV6aNntr1nz57v
MvreLOgZXEKkmeysvHhhKwedIJ5Z9ubnV2P7vtnZ+b35sbHiW8D3/Lb5UDt5nBCS
9X+qvqt02u68Z047Xe+PVXpQDl6ew7xsvMVt56BHZ6ef7VqttovnNkafnbX5o5ko
riHabILg9fls5KE4OT8/H933YTs7f2Zx7cLz/ebJ63QmmJSF4BXzPZhcCg4sKRL/
vZhU6UHQK+OTwEdXAb94PpZ9PW6Zf7a6srJSRfRdjP4EamtfRmbnn3gImPMVsS1m
J3NnY5GwHEQO5qNN/oToVRd/IvqOy/JxuU8P6mww4kBPqnSHYyLtcuVCCxGM9+rr
cbjy/BkMybAy+nvQhaYXcc3MRCKrweAuUs7y/uJF1WjEdrUFOkV+fswWFfe54DGX
CD5C92H0DeiXsInLy2Jk9vmYStdMpe8z+gh469UXL6xQ+YsB/QmjW4jedNrGSHYL
E5hiYrHYt+mJAzb4dHTanAH7etw2P2uxqva2T+eaJ/xqJLILkmQ0FvEy6XIe4CQt
0nzE0iB6JhOtEv79vmNtQNcZ39+5ROA52pGDEujFcM6h+n72etw7PxthY/0tG3Gz
s/soJFxDXIlE9iIRLzwIgLEi8ScnrcZJTJyfnbXwHPItNHk+BHo2Ac0nXt6lJ5wH
MU4IcjVctNPBDskv4fvayuzsnsVCdX7m9XgRkR+rLix4bSOgzxK9Umk3LtPzZNHY
/uWaBTurK+Gw/4kYI81bTir8ybktnM3C+fkYnTfFVtDBl/jSrOW8sXVZpXeJbtEm
mdkqRtxJtJ/3mQG9KcDJ1fmx+V9RSvmmeBaB+xEmQS3yTX5lTLUFPlhOJFTNv9TR
hc0+Oy1qh1Tfw6uMvRqlanPSsJ4x+N7u+HifflyRBCt44XIZddZYitqY6LxGTXVS
k9+1aZr3HcuJhFy/S0fsa+LlZkzkbo4wOr6K5+drDodKH3/rYpJ7O042ATonSJVg
GZWWGgu2qa8frEvGK5jxqtNoSRW+wonZrMjxsUvfiS8m+u7T71uf7lhbU+mLRNds
QG+3T04S5aAM7JXa3HTlcv1lN5VC+JIJX6NS4bk2J/FcRRIdl2sBh8PxR+hrAzrf
WLxNj51wnHAiSsdCm3KVwGu7wjdqtUbrMnAZCFzGLk8ILNBGknyXl2uxQICNuHI5
WH6M3quoZGYafUJ1flylO4ie4GNiw+fDMA7gxLHAGj2xS2XlMibyKp2X8IA+6egN
vRzskgXZU8/uMnpgDZcLu7wcH2e+j+sN9DZ3LCGVok/UzHfLRJGvVCSkh8dVVED3
6endcldnf45eafl8rUbLh69W6w5bowsCfJek1hpFR6Wn/iD982364qJKL3HANhot
zfpcLcgxjS5VoLoGkqL3vZz6Jr3b436HvqjSKy1dvPsJUOl46uiVWosUWav9Abom
Oxb52n16G3QfxV6zxsBqpH1xQIfVagJZaRD5x+lrgYHome8P02t8RWJnJ+P6hrHX
FqQWTwdVuuSrJZh9R95Bp5FDV0DbR+g8l8DMdd9KiQTn4zmuwsXerQc4TvK1EiVy
vk8P6ujTt8Zcn/55EWNXT3e73bfoQoVvy4lRjfilj5bpKVe+Mno6N+lsC5yvgUuC
sbwj6nrXp3VBoLeM/vH8PE34ALAanT1u6Am+JjA/73teSrR9EujtA9CRDF+r9AC9
hy9Gn55ml0AveHJwE21lFi+gY6uj492i2/21JoyCPsp8/vLly80rbUulBDcncXNz
o0Sfg92m98o9ZsTvTffYBfSDwHxf3CZ6IOAm3x18zaFyx18ZPi+64fucIHzh5wSi
HjGPj0qA0vNLKfFFUOmVtjs3aYDvt+k9RoeX7BIG9C5F4CXR3W7DefHVHToUUAxt
p+/SE6rLCXWbIDoi/7v0vt3QaUt09xqwhL5DT4du00ua2r7o6Yl79H7khUfpLPsv
u9Pku47+2X2bruZdSMyR6r6URkdHcebRQd7v+I68M9/7I+4uvSe32225L3uZK/kc
a4FXr16xIfcKPZeDX8wW0+NpZy4UCuXS6fSrWE1o1WIt0vzx8TFqWe2YWVt0HKQP
Nt8kOFGv+cfpaOve9OlvnOnc4loAmncRHQ1VdtyVPbc6x4vWkGZZ0HO5bECjv8vl
csTmxnOaOX0DuoEkr6OnUoDf4EFcdzoP1Pm+2ztwpg8CKp0KrQus4mT2PJReLGrs
8/NijBdyrkmiJ0C9JDoS22bgg1wOq7CAJHAVgXyvCG00eUK79C36JzgvqPQEdbe3
6dbzSZz18+LrtBr5168/M3rWUeMlHvZ+cnKSXvm0M9DCJHOQzRZzfXqaa0sxh1q2
1Up7l06hf9cPvPOgfZeerjkWyaA6xADtIdFzWUcs5qPJ3DkyMsIm8ABrssSYCwdA
l5jvnNBuseOBgErHDKejQ+oBeKzSkYQ3A7pbpRf5B+mT70SxJWJyTReLRez6Bj3W
2kix+KZ9Q2+I+u4Chbano3e7o3BeIngp7XTKbXef7mb09DfobyrUNknSq2w2W2tI
tRbm9RprdorF8wG90q7QYRyvab737tCnD5wGN9Ubt8Gw2RvFaCe6e43Rt91zNQfV
2UXD9jbo2I3xowbDpE+G1ev11sFButerd+VuSpbebMKBtDO7fkNvV0rBriwH65rv
t+koMj4DQo8pJp12zvX6viPwbldo24pa5ybX3azauMn3OdL8G8zVPSxduM3NTVq/
9Drc5jq+8DiYfDWIPDp9oYs1Rv1K77tW5wnalQ0I/XR3zplOT9/QYbfo8J0qrdtB
vruKgXJKJnqb6FdXHfkddjZbpXaF0SuMnm63pVo7mJJldRXZS/X0olPLrBuqp236
zfSjviPy2BGRd0P2cyXRLiH4GCdOtAbyOiLuk3t1Yyqdzr5CwJnv6CvFWKksJ9TI
P0j/ZDAY5G7aYPjS7bUDLO8GGnGGO3lH5OG7ODdqyGVdMbZGYAMsIPoCUHoaHSX6
7Ozkxz493RYEcQ1Np6iq7i5dLe/QyicJi/iXRL893h23NY/eRmSafyUJJTSRnBPV
RqpJ68WPRRQAXyDWwuUMfMdP+ALimrimjvcH6d13CD2G/afH6J919DSKajDVCxqN
5QNYvZxCAtK9LnrGVMKZ00UexY6TUegT8rfpAn437UzLj9EXQZ/U6Ou5yclPKTl4
1XmzDoPqPmF267Ll+xumur7vHMcL9V5f8w/Tg3TnxhnoPUo/xxzjSqfHQfflPhZd
vk/t9rt1Rv/7VZDm1vLVVfcNhl1WR6/UKj2M99SAnrpPZ7dwSo/Tc+oslwNd2MyO
ZJFwzGgingk5mIDmDw7W8dh8p/MdawvQ69/wfVpta4NHgB90e9M3dLdWaW/o2izL
6Fx6ZBsV9bzodm9jlon5fIFcEcKb/JjzrWeLB+32HKNjYRNYk9pYzSdu6LfaeaJP
l6jD6dM/f/7sJt8XIQYHzztYH4+R7soWi7lXoOOkPvfBwWZLPiq15nyVmsS3Wg7I
3/U6EFh8tSgKoPMtsca1uRbNfNq9izt0VuvYF7V1VAGJvrbmVtdxVNZBZ+N9kW2x
wXifkyvt6XKwazTGO514hwpnMFWnF6wVpr/M8URPCFjGtdUFn7aG/QZdjQH5Pqqn
uxdfOeZAH19keHo6HF95gZvma9NlaP4qHo+T0q+mu52ruPEqfmWMX6Vqc22O0SUs
uSS5HAzKZaOeri1gbjynA99PP6r5vmDigu/sLlk8Pt0D/Yo94tNzGp1DqeMbbbq1
pK/zOt9ZMx1UL+WGruG/RRe+1MS5Gl+TJHTOgjAqoJGWg9O9+jRFICXxGh1Laiyn
5bp+xOnpqu6CXc33ft4BhuYHeVfptAEdeR9NSLU5VO9Y7Cu7a+We+xoTRXes8RU1
ndZuWuSFClTnq2Bpq59lunes39Nq431w92ARvt9onpmDah2XqAiIp4wzYYuFPN1N
4Bstke6bobeD6ipEx0iqiI41aD4m/jh6W+alepnN78yMnXKwbuzU6506WtZSTVLp
EjSPgdfy+WKPzTID+stUW71rcZuuYzN6qVSrBcuyTHdo2b3Sq55Md2i1+7S1Gips
SS4h7aR5qrTB8o+jC4mayCHeWI3D307n6qreBdXYYVdTr0F1lRJpnqtIFRmTzOOz
zB+ly3zA1xDZ3SqsKqQKVg+JYLCbouB3uhjnRC9xdAdXQl93W/N/3XdMnILE1VSh
rdGtWvo4ONBg19Ngaxn4LnFCpdVIUGfV+YH0Eleqp+Qu5FZHkxHEglLicSmBFi1v
fGJFo3NCohJzxFoNX0P6gaoTeK6s0zx62jqyDsMpg4kWRZ7odJm4oLWYw7H2I32v
NRJYQHT6f/hwVe+pmr9RHYs8ltJcQk6Q+n8cHeM9UGtLUgl9BaneeNWVofl+HPj+
iMOyHSOuju4iZfxdOizV1n06sLboIPraLfga0zzXiqGCqQvHVotkjwvRxl9ZUn2H
x6DXuHJPP8vc76w013vfTU9UOLoThAVTjYQmopjRHWpUNcw8XKNPL2EKqvHBVPfR
8a7B8b4ufB9dElI9OdihvzlJlXsJWeBrNQx/kRb1rVg/7wl43wrUMO7VT4G/Te/9
ITpfSaW65UGdv6oHUWnKZYw+uSS0+rUO3Y3QctAtX31n9VfpUF2Dapta56/QUXfK
xr9fae/KA823UejRUVJUWo/StQPfTY/RTRoOC0km+k432Lnq0zv8gI7+k5Pr9Alr
6jF6/0hduJlfH817o9aij6VUzaOnlbCg7fawpqoPNE/Vpk1rmVTw0dWE9rb8+3Sb
l9FLgtyVqbHAiGqR0Hwi+1COPo4S1LyT5iH5dk3qYi7u9em98rfo5Hs74NBVGx2d
/HZYt0e9k1LaezG/gu5CWnhm+2hErQ/2Dlbjqy7k4ujoaHS1VaF7VrgyrHHbLVHo
JkqDzuo76H27S/cq26PKubRnqE4rlrJs+I/FrXykUvtma+jJ1lapvK7Yqv4VH81x
JZn1tEIDvVJDHMwy9OiFh5RIr5fT0z9t9noX7wT2ieYduquo0je2HQ6nKKXRXQxt
ybtKuN7eiqDOXlmUzc5HZeHqo/Lm6iolSW0royPwbb7G+7CWCeh831Ryvc3euaKn
X1R7vfP6g/Q5i0of2tiF6iTqLrY3fH4lWpPiCpXYC0VOGZVnVzPKxzdXdZ5Pz6Py
Ut65CjTflbXPpDR6TgmDpyjKeXhoq9o9v7BdVBXloqeMWLdfKEfpQHho49dR0KPb
yp7ToihzauQ3lO0w6FypqOzVZpRZ3/mGQpV2VXnCrSgXcpX+5VmO570rFf+6/6PT
/7EilagD6NxSnQU/xHzPfcop6+eKJUe+vwRdCac3FgIb1fQo0UeKjiHvwHeHy7Kh
hCWhJBq23qWCNkXZGhpCpRdfbSvKtvKr6KvxT5R4TTI4K8rF3tb83laAxwpalgd1
nuW9txnZ+sToYwjAuaJGntHXAkeWXSUQsBA992JLsdzQHY6iciQJomGj2EsFu+9G
NqG+Xk+WSx8/rigzDRp4o0rsnYGrKFaBPWoNmUZc547mCdrtDi10H6BblWxg9Qj0
yHM+fkNfKTp2lT0pZtiK1jDg5fo7w9Zm9zyymQoGR7YMQdlXKn3cmpZWvJzE0G3F
6nPEGjxmPX3eL6oXBmjPsjkUiWyxy+jZDGFGD4AeONpeHRoNOBy/bq9uWRZfbHuZ
4/RPeEZfSQZlaPoo/rF9hp2RVDmiLNQvhpSL9WB3y3ChbE1K8+k2p1hLihURqKGz
WrvprIj+KVyNwt1odXOzmguvr1dB/1QNv6xupi2BwMJuIL2wYJkF3VWdse4uuiwq
3WFVdgM+yV+t+i2WSd+CJdqqVYTJaitY9eboTwtdC9XoJ3nTgArrPyj5022/UxJk
6rFq96tNWVd0aAedlaCOtepueKMK+rhDqjgGSXc4LEXQqWVCG4siWqM74+ga0Uij
uNGSpVw3diWspDh0Vuwj4YoMzcvB7nfR2yp94Wh2IfAA3eEgeinRTuDHg0YaygKu
oSVSS4+evkFruIaOzkmJch09U+eP+K7at+gJuVbppbqpfneRKicwl/O0pkaxEsU+
nT585iW5g+nvgTqf+pN0TsYqEuHsqBM6dRcpIzX1OIgutjago9A38AttYdBZ/Rjf
Y7SAS6DKdsv1DnmP3kZrs4KDvGMdDfraGtZZrT+S98fp7QRX8/nUZVMNyaU7CGX6
oydq8f7eqQzo1FJzSIlP/Vzm5/2nC0T/ecboP/V/XXiM/q9vP/rPf8H6P/0v3Xvd
8f9Lurbb39Md/r/0vU8a+KjR1fcsCn+Zrn49sHPfz4Hvusj8JfrNSe7uPPj+X3r0
77r+35+v+Z/3P43870/9n0b+8Y//L8AA77C1+SjTRcIAAAAASUVORK5CYII=

------------jNfx0zYw7l8tHath7zDxwo
Content-Disposition: inline; filename=tek-gentoo.gif
Content-Type: image/gif; name=tek-gentoo.gif
Content-Location: http://www.gentoo.org/images/tek-gentoo.gif
Content-Transfer-Encoding: Base64

R0lGODlhfQB9AOYAAAAAANuXgwD/IA6XJlxhYqoAAP3/7zs7O8zAzdGFWebm5ry8
tyAhInRzcri2q97e3q2zsb0uM97e1ZmZmXZ6e6esrMtoWaWkpOTch9XV0L3DvYqJ
hPP66FNTUGLPeLUPGaKhnYODfsPA2XuCf7/ExGZmZg8PD+S6nu3t6u/cxLSus9ff
ezMzM8ZIR+bm3+fr1r29vZmZmTLFR3t7e6mp9ra7ue3ltNWxVtbW1rckIbu6/9+h
mteMft7d/yUnKK8ADlpaWoF9e0tLStjZ3PT64NLVstF6aPf399mfb2xxc5uPoenD
s8lXWKurp/X70ays1z6QTpKSjobHlLW1tY55iufrnHl6dfH3wcXFxd6the/u70FC
Q7e47sTEv/Dv/yP4R9LboWZmZnl2k5yhrYSFhNXX+b4tKu3txMzM/+XDmoyMjP//
/+Tm/LYZH9WFc8dVTNV5eFpXaMvMxY+QsbIGEa4ACMA7Oq2trbmsvMxmZvPg0vXs
0uKxnCkpKhD+OczMzCH5BAQUAP8ALAAAAAB9AH0AAAf/gACCg4SFhoeIiYqLjI2O
j4Z3dyoqU5aXmJmXTRAwnp+eJCRYpKWkfxmpqjhDrUMPsLGyKCgutrEKWgoKtFq+
v8BatS6+R8bHyMnIa8zNzoJNTZLTktEqENiaU9GYC5agnqV/46qrOOeu6a67sucP
u/DwtPO08r/K+MrO+2uC1P+SsGXD5OkbjBqWNGhYsNASlnHkVF1x4kQCq3QviGh8
sYvWrXPo4omkRy8YsHz4+D0DILATiUw1YspEiENLjTs1sChUuEBUk5wqYIiDaCOL
ESQ2yqU6E8BNACLxHpyDiAOWAqsi5aHo2EsLyq8qm0GL1mQIignYLtzRNsXshAs1
/zSAqgGh54VL4GDIqWKmgBkMcuRkaIUixYcCds5AxALuT1VYrbDKGuk12b2vxsIy
G9sERNUGktRamnZpiIIocBEaPIhFLYw7DsDIBuOgSJq+b/ag0EhEwos0bX5YuGKj
yIIaC4rILkICR0YUEpxwsMVhuouuWgwYKKascnfvmvsBIFtjF4g/WKJJevgHhjQc
CjZMuAMDPUJKeFpbclAFAxIkaThhwBI5FGDBHk5kAeAZV2TxwQ8J+IcBGEX0h0QW
VRSRgg027LFHFmkQccYSKRiwRwop7EHEHhy+YJJ3yHC3jGac7XMEBFGo8EAzR9QQ
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
rKIVr4jFLGpxi1zsYiAAADs=

------------jNfx0zYw7l8tHath7zDxwo
Content-Disposition: inline; filename=sevenl.gif
Content-Type: image/gif; name=sevenl.gif
Content-Location: http://www.gentoo.org/images/sponsors/sevenl.gif
Content-Transfer-Encoding: Base64

R0lGODlhfQCQAPcAAAAAAP///1JewEpiukZiuhp0qK0VFu1DRkMVFvFtcF8sLdqo
qeAXHagoLPvExv3X2P7k5feMk9h8gTgjJPutsUUyM5g1Ps5SXcSPk/7w8e7j5K5u
drYuQmBcXYU4Ti4bIb6eqKE7XU5MTf37/IhLbXJAXZtkjIpAeP31/TIxM2dVe2xR
kxIQGBoGXh4KYhoGYh4KZhoKWisiTWRUn01FbRUGXBoKYhoKXh4PZh4PYRoOUxcN
RhgRORMGVRkKZhYLUhoOXhoOWhoSRToyYhMGYxYKYhYKXRoOZhoOYoN6txoTUAwE
Vc7N2RwWbCYgeEE8ghIOajAthFpWullWtV9cuoKBl+rp/QYESg0OaRMTcFtctlla
qVdXmI2N1fT0/i4uLzs7PJqam4qKi1ZaxldawlZavldauTxBm2pusNDS+AMFHAwS
aUdPrVJaxk1VuVJawlJavldewldfuKOo7lJexlJewk9aulZfvlRcsHJ1klRiw1Je
vmh20qquyU5ewk5dvlJivlBeuVBfs1ppyFRhrk1iwk5ivlFiuIuStkthuU1ht0la
o6aosUhivEpivkpivUliukpiu0tiuU9mvkZivkVhuUdiukdjuUhjuVVijEJiv0Jh
uUZmvkZkukpmukJmv0JlukRktktqtm+Q40JmukFmuFt7wk9nn7bC3A8oXR03bj5m
uj1mtkNrvDZmujVmtDpqtjxruz9nqTJLdZGv4TVqtkd4vjlYhjVtuzZoqTBor4mS
nS1tsjJtsu31/lB8qWGPvW9wcSZuriturjp4rzVplZCyziJyriZyrih0sStyqxly
rh5yrh5yqiJ2ryJyqihxpTR0oRp2rhpyqhlupBx3sgwzTB52rh9xpjyJuhZ0qhp2
qhZjkBpypRlrmg9AXRVZgBNNbx52qh52piJ3qiBxoCp/rxZzpRp2phx6rCF2ovX7
/hZ6phd2oRt6pWFiYoGCgv769YuIhX4YGCAHB46OjoaGhnx8fCQkJB4eHhoaGhYW
FhQUFBISEg0NDf///yH5BAEAAP8ALAAAAAB9AJAAAAj/AAUIHEiw4MA/eur8gRNn
z55Aet7EEQCHYaA9BOHcQQhH4B+PcRjaETixzp4/deoY+hMnTiBAb+jQqWPnTqBA
cd4AshOnTc6PAiYGhQNIACBAY8bo0cNQAEKnBqNKneox4UimcBzucRPHTdA4NUci
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

------------jNfx0zYw7l8tHath7zDxwo
Content-Disposition: inline; filename=gni_logo.png
Content-Type: image/png; name=gni_logo.png
Content-Location: http://www.gentoo.org/images/gni_logo.png
Content-Transfer-Encoding: Base64

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
wGH/CxyDsVZDkGMlAAAAAElFTkSuQmCC
------------jNfx0zYw7l8tHath7zDxwo--