Welcome to Linux Support and Sun Help
Search LinuxSupport
From: Subject: LJ 4241: Using Postfix for Secure SMTP Gateways Date: Fri, 20 Jul 2001 10:07:59 +0100 MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_NextPart_000_0000_01C11103.DAA7F920"; type="text/html" X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6600 This is a multi-part message in MIME format. ------=_NextPart_000_0000_01C11103.DAA7F920 Content-Type: text/html; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable Content-Location: http://www2.linuxjournal.com/lj-issues/issue78/4241.html LJ 4241: Using Postfix for Secure SMTP = Gateways Linux = Journal=20 Home  >  Magazine=20  >  #78 = October=20 2000  >  Using Postfix for Secure SMTP Gateways=20
Wednesday, September 13, 2000 | Last Updated 04:35:09 PM =


  <= IMG=20 alt=www.rackmount.com border=0 height=60=20 src="http://www2.linuxjournal.com/BannerAds/pcw/rackmount07-27.gif"=20 width=468>

Using Postfix for Secure SMTP = Gateways

Improve your site's e-mail hygiene and make life difficult for = spammers=20 and hackers.

by Mick Bauer and Brenno de Winter

E-mail is easily the most popular and important Internet service = today, which=20 has made it a popular target of cyber-criminals and spam-happy = miscreants.=20 Adding to the problem is the inescapable reality that configuring = sendmail, the=20 most commonly used Mail Transfer Agent (MTA), is complicated, = nonintuitive and=20 easy to get wrong.=20

Wietse Venema, intrepid developer of TCP wrappers and co-creator of = SATAN,=20 has come through for us again: his program, postfix, provides an=20 alternative to sendmail that is simpler in design, more modular, easier = to=20 configure and less work to administer. Equally important, it's been = designed=20 with scalability, reliability and sound security as fundamental = requirements.=20

This article is intended to bring you up to speed quickly on how to = use=20 postfix on your network as a secure means of receiving e-mail from and=20 delivering it to Internet hosts. In particular we'll focus on deploying = postfix=20 on firewalls, in DMZs and in other settings in which it will be exposed = to=20 contact with untrusted systems.=20

Is sendmail really that bad? That depends on what you need it to = do--the=20 learning curve may not be justified if your e-mail architecture is = simple. But=20 sendmail is unquestionably an extremely powerful, stable and widely = deployed=20 application that isn't going away anytime soon, nor should it. In fact, = The=20 Paranoid Penguin will probably feature a sendmail article some time in = the next=20 few months.=20

Background: Mail Transfer Agents

Both sendmail and postfix are Mail Transfer Agents. MTAs move e-mail = from one=20 host or network to another. These are in contrast to Mail Delivery = Agents, which=20 move mail within a system (i.e., from an MTA to a local user's mailbox, = or from=20 a mailbox to a file or directory). In other words, MTAs are like the = mail trucks=20 (and airplanes, trains, etc.) that move mail between post offices; Mail = Delivery=20 Agents are like the letter-carriers who distribute the mail to their = destination=20 mail boxes.=20

In addition to MTAs and MDAs, there are also various kinds of e-mail = readers,=20 including POP, POP3, and IMAP clients for retrieving e-mail from remote = systems.=20 These are also known as Mail User Agents, or MUAs. (There is no = real-life simile=20 for these, unless your mail is handed to you each day by a minion whose = sole=20 duty is to check your mail box now and then!) But we're not concerned = with these=20 or with MDAs, except to mention how they relate to MTAs.=20

By the way, if you still use UUCP, it's supported in postfix (and = continues=20 to be in sendmail, too); most MTAs support a variety of delivery = ``agents'',=20 almost always UUCP and SMTP at the very least. Still, for the remainder = of this=20 article we'll assume you're interested in using postfix for SMTP (Simple = Mail=20 Transfer Protocol) transfers.=20

SMTP Gateways and DMZ Networks

One very common use of SMTP, especially in organizations which use=20 other e-mail protocols internally, is on an Internet e-mail = gateway.=20 Since SMTP is the lingua franca for Internet e-mail, there must = be at=20 least one SMTP host on any network that needs to exchange e-mail over = the=20 Internet. In such a network, the SMTP gateway acts as a liason between = non-SMTP=20 mail servers on the inside and SMTP hosts on the outside.=20

This ``liason'' functionality in and of itself isn't as important as = it once=20 was; the current versions of Microsoft Exchange, Lotus Notes, and many = other=20 non-SMTP-based e-mail server products have no problem communicating with = SMTP=20 servers directly. But there are still reasons to have all inbound (and = even=20 outbound) e-mail arrive at a single point, the chief reason being = security.=20

There are two main security benefits to using an SMTP gateway. First, = it's=20 much easier to secure a single SMTP gateway from external threats than = it is to=20 secure multiple internal e-mail servers. Second, separating Internet = mail from=20 internal mail allows one to move Internet mail transactions off the = internal=20 network entirely. The logical place for an SMTP gateway is in a DMZ=20 (``Demilitarized Zone'') network, separated from both the Internet and = the=20 internal network by a firewall.=20

As with DNS, FTP, WWW and any other publicly accessible service, the = more=20 protection you can place between potential hackertargets and your = internal=20 network, the better. Adding an extra NIC to your firewall, keeping = public=20 services in a separate network, is one of the cheapest and most = effective ways=20 of doing this--as long as you configure the firewall to carefully = restrict=20 traffic to/from the DMZ). It's also good risk management; in the = (hopefully)=20 unlikely event that your web server, for example, is compromised, it = won't=20 become nearly as convenient a launch pad for attacks on the rest of your = network.=20

(For additional information on the DMZ technique of firewalling, see = the=20 article Securing DNS and BIND, page 92 of this issue.)=20

Thus, even organizations with only one e-mail server should still = consider=20 adding an SMTP gateway, even if that e-mail server already has SMTP=20 functionality.=20

But what if your firewall is your FTP server, e-mail server, = etc.?=20 Although the use of firewalls for any service hosting is scowled upon by = the=20 truly paranoid, this is common practice for very small networks (e.g., = home=20 users with broadband Internet connections). And, in this foul-weather=20 paranoiac's opinion, BIND and postfix pose much less of an exposure for = a=20 firewall than other service applications.=20

For starters, DNS and SMTP potentially involve less direct contact = between=20 untrusted users and the server's file system. (I say ``potentially'' = because=20 it's certainly possible, with badly written or sloppily configured = software, to=20 create extremely insecure DNS and SMTP services.) In addition, both BIND = and=20 postfix have ``chroot'' options and run as unprivileged users, two = features that=20 help reduce the danger of either service being used to somehow gain root = access=20 (we'll discuss both of these options in depth shortly.)=20

Postfix Architecture: How Does Postfix Work?

To understand how postfix works, it's useful to consider its = background. The=20 main purpose for postfix's existence is sendmail's complexity. Postfix = is a=20 full-featured MTA, and therefore its core functions are the same as any = other's.=20 But postfix was written with unusual attention to:=20

A key contributor to the stability and the speed of = postfix is=20 the intelligent way in which it queues mail. Postfix uses four different = queues,=20 each one of which is handled differently (see Figure 1):=20

Postfix for the Lazy: A Quick and Dirty Startup Procedure

And now the part you've been waiting for (or have skipped directly = to):=20 postfix setup. Like sendmail, postfix uses a ``.cf'' text file as its = primary=20 configuration file called main.cf. However, ``.cf'' files in = postfix=20 use a simple ``parameter=$value'' syntax. What's more, these files are = extremely=20 well commented and use highly descriptive variable names.=20

In fact, if your e-mail needs are simple enough, it's probably = possible for=20 you to figure out much of what you need to know by editing = main.cf and=20 reading its comments as you go.=20

For many users, this is all one needs to do to configure postfix on = an SMTP=20 gateway:=20

  1. Install postfix from a binary package via your local package tool = (rpm,=20 etc.) or by compiling from source and running postfix's = INSTALL.sh=20 script.=20
  2. Open /etc/postfix/main.cf with the text editor of your choice.=20
  3. Uncomment and set the parameter myhostname to equal your = server's=20 fully qualified domain name (FQDN), e.g., ``myhostname ==20 buford.dogpeople.org''.=20
  4. Uncomment and set the parameter mydestination as follows, = assuming this is the e-mail gateway for one's entire domain: =
mydestination = $myhostname, localhost.$mydomain, =
$mydomain
NOTE: Enter the above line verbatim.=20

  1. Save and close main.cf.=20
  2. If desired, add a line to /etc/aliases diverting root's mail to a=20 less-privileged account, e.g., root: mick. This is also the = place to=20 map aliases for users who are served by internal mail servers (for = example,=20 mick.bauer: mbauer@secretserver.dogpeople.org). When you are = done=20 editing and/or adding aliases, save the file and enter the command=20 newaliases to convert it into a hash database.=20
  3. Execute the command postfix start.
What did we = just=20 achieve? In only four steps, we installed, configured and started SMTP = services=20 for our machine and its local name-domain. If this machine is a firewall = or an=20 SMTP gateway on a firewall's DMZ network, it can now be used by local = users to=20 route outbound e-mail, and can be pointed to by our domain's ``MX'' DNS = record=20 (i.e., it can be advertised to the outside world as a mail server for = e-mail=20 addressed to our domain). We've also told it to directly process (rather = than=20 forward) mail addressed to local hosts. Pretty good return on the = investment of=20 about five minutes' worth of typing, no?=20

(NOTE: While this may be enough to get postfix working, it is = not=20 enough to secure it. Don't stop reading yet!)=20

The Quickness and Dirtiness Explained

As cool as that was, it may not have been enough to get postfix to do = what=20 needs to be done for your network. And even if it was, it behooves you = to dig a=20 little deeper: ignorance nearly always leads to bad security. Let's take = a=20 closer look at what we just did, and then move on to even niftier = postfix=20 tricks.=20

First, why did so little information need to be entered in main.cf? = The only=20 thing we added to it was our fully qualified domain name. In fact, = depending on=20 how your machine is configured, it may not have even been necessary to = supply=20 that!=20

This is because postfix uses system calls such as = gethostname to=20 glean as much information as possible directly from your kernel. If = given the=20 fully qualified domain name of your host, it's smart enough to know that = everything past the first ``.'' is your name-domain, and it sets the = variable=20 mydomain accordingly.=20

You may need to add additional names to mydestination if = your server=20 has more than one FQDN (that is, multiple ``A'' records in your domain's = DNS).=20 For example, if your SMTP gateway doubles as your public FTP server, and = thus=20 has the name ``ftp'' associated with it in addition to its normal host = name,=20 your mydestination declaration might look something like this:=20

mydestination = $myhostname, localhost.$mydomain, =
ftp://www.$mydomain, $mydomain
It's important that any name by which your server can be=20 legitimately referred to is contained in this line.=20

There were two other interesting things we did in the ``quick and = dirty''=20 procedure. One was to start postfix with the command postfix = start.=20 Just as BIND uses ndc to control the various processes that = comprise=20 BIND, the postfix command can be used to manage postfix. Like = BIND,=20 postfix is actually a suite of commands, d=E6mons and scripts rather = than a single=20 monolithic program.=20

The most common invocations of the postfix command are = postfix=20 start, postfix stop and postfix reload. Start and stop are = obvious; reload causes postfix to reload its configuration files without = stopping and restarting. Another handy one is postfix flush, = which=20 forces postfix to immediately attempt to send all queued messages. This = is=20 particularly useful after changing a setting that you think may have = been=20 causing problems--in the event that your change worked, all messages = delayed by=20 the problem go out immediately. They'd go out regardless, but not as = quickly.=20

The other thing we did was to add a line to /etc/aliases to divert = root's=20 e-mail to an unprivileged account. This is good healthy paranoia: we = don't want=20 to have to log in as the superuser for mundane activities such as = viewing system=20 reports, which are sometimes e-mailed to root. Be careful, however: if = your=20 unprivileged account uses a ``.forward'' file to forward your mail to = some other=20 system, you may wind up sending administrative messages over public = bandwidth in=20 clear text!=20

Aliases Revealed

As alluded to in the quick and dirty procedure, aliases are also = useful for=20 mapping e-mail addresses for users who don't actually have accounts on = the SMTP=20 gateway. This practice has two main benefits. First, most users prefer=20 meaningful e-mail names and short host /domain names, e.g.,=20 ``john.smith@acme.com'' rather than = ``jsmith023@mail77.midwest.acme.com''.=20 Second, you probably don't want your users connecting to and storing = mail on a=20 publicly accessible server. Again, common sense tells us that any server = the=20 unwashed masses can commune with must be kept at arm's length. The = greater the=20 separation between public servers and private servers, the better. (And = don't=20 forget, POPmail passwords are transmitted in clear text!)=20

Still another use of aliases is the maintenance of mailing = lists. An=20 alias can point to not only an address or comma-separated list of = addresses, but=20 also to a mailing list. This is achieved with the = :include:tag--without=20 this, postfix will append mail to the file specified rather than = using=20 the file to obtain recipients. (This is a feature, not a bug; it's = useful=20 sometimes to write certain types of messages to a text file rather than = to a=20 mailbox.)=20

Here's part of an example alias file that contains all of these types = of=20 mappings:=20

postmaster:	root<\n>
mailer-daemon:	root
hostmaster:	root
root:		bdewinter
mailguys:	bdewinter,mick.bauer
mick.bauer:	mbauer@biscuit.stpaul.dogpeople.org
clients:	:include:/etc/postfix/clientlist.txt
spam-reports:	/home/bdewinter/spambucket.txt
One warning: if an alias points to a different mail server, that = server=20 must belong to a domain for which the SMTP gateway is configured to = relay mail=20 (i.e., either that server's FQDN or its domain must be listed in the=20 mydestination declaration in main.cf).=20

Don't forget to run either newaliases or, hipper still,=20 postalias /etc/aliases anytime you edit aliases. The = postalias=20 command is hipper because it can accept any correctly formatted = alias=20 file as its input. Both commands compress the alias file into a database = file=20 that can be searched repeatedly and rapidly each time a destination = address is=20 parsed; neither postfix nor sendmail directly use the text version of=20 aliases.=20

If you have a large number of users and/or internal mail servers, = alias-file=20 updates lend themselves to automation, especially via Secure Shell (ssh) = and=20 Secure Copy (scp). Using scp with null-passphrase RSA (or DSS/El Gamal) = keys,=20 your internal mail servers can periodically copy their local alias files = to the=20 SMTP gateway, which can then merge them into a new /etc/aliases followed = by=20 postalias /etc/aliases. (Unfortunately, telling you exactly = how=20 to use scp/ssh is beyond the scope of this article.) This practice is = especially=20 useful in large organizations where different people control different = mail=20 servers: day-to-day e-mail account administration can be kept = decentralized.=20

Keeping out Unsolicited Commercial E-mail

Junk mail is one of the most common and annoying types of e-mail = abuse.=20 Postfix offers protection against UCE (Unsolicited Commercial E-mail) = via a=20 couple of settings in main.cf. Some caution is in order, however: = there's a fine=20 line between spam and legitimate dissemination, and it's entirely = possible that=20 even modest UCE controls will cause some legitimate (i.e., desired) mail = to be=20 dropped.=20

Having said that, for most sites this is an acceptable risk = (avoidable, too,=20 through end-user education), and we recommend that at a minimum, = you set=20 the following in main.cf:=20

Hiding Internal E-mail Addresses by Masquerading

In order to prevent giving out information that serves no purpose to=20 legitimate external parties, it is wise to set in the main.cf file the = parameter=20 masquerade_domains = $mydomain (remember, = ``$mydomain''=20 refers to a variable). If you wish to make an exception for mail sent by = ``root'' (probably a good idea), you can set the parameter=20 masquerade_exceptions = root. This will cause internal = host=20 names to be stripped from FQDSes in ``From'' addresses of outbound = messages.=20

Running Postfix in a chroot Jail

Now we come to one of the groovier things we can do to secure = postfix:=20 running it in a ``chroot jail''. chroot is a UNIX command that = confines=20 the ``chrooted'' process to a specified directory; that directory = becomes ``/''=20 for that process. This usually requires you to first create copies of = things=20 needed by the process but normally kept elsewhere. For example, if the = process=20 looks for ``/etc/mydaemon.conf'' upon startup but is being chrooted to=20 ``/var/mydaemon'', the process will actually look for=20 ``/var/mydaemon/etc/mydaemon.conf''.=20

The advantage to chrooting should be obvious: should a = chrooted-postfix=20 process become hijacked somehow, the attacker will find himself in a = ``padded=20 cell'' from which (hopefully) no sensitive or important system files or = data can=20 be accessed. This isn't a panacea, but it significantly. increases the=20 difficulty of exploiting postfix.=20

Happily, the preparations required to chroot postfix are provided in = a=20 subdirectory of the postfix documentation called ``examples''. These = files=20 aren't really shell scripts: they're suggested sequences of commands.=20

Better still, some binary distributions of postfix have installation = scripts=20 that automatically make these preparations for you after installing = postfix. In=20 SuSE, for example, the postfix RPM package runs a script that creates a = complete=20 directory tree for postfix to use when chrooted (etc, usr, lib, and so = forth) in=20 /var/spool/postfix, with the appropriate ownerships and permissions.=20

In addition to ``provisioning'' postfix's chroot jail, you need to = edit=20 /etc/postfix/master.cf to toggle the postfix d=E6mons you wish to run = chrooted=20 (i.e., put a ``y'' in the ``chroot'' column of each d=E6mon to be = chrooted). Do=20 not, however, do this for d=E6mons whose ``command'' column = indicates that=20 they are of type ``pipe'' or ``local''. Some binary-package = distributions toggle=20 the appropriate d=E6mons to chroot automatically during postfix = installation=20 (again, SuSE does).=20

After configuring the chroot jail and editing master.cf, all you need = to do=20 is start postfix the way you normally would: postfix start. = Postfix's=20 master process handles the actual chroot-ing.=20

Conclusion

That's more than enough information to get you started. May your mail = arrive=20 promptly and the spamming filth stay out!=20

Resou= rces=20

=20

Mick Bauer is security practice lead at the Minneapolis = bureau=20 of ENRGI, a network engineering and consulting firm. He's been a Linux = devotee=20 since 1995 and an OpenBSD zealot since 1997, taking particular = pleasure in=20 getting these cutting-edge operating systems to run on obsolete junk. = Mick=20 welcomes questions, comments, and greetings sent to mick@visi.com. =

=20

Brenno de Winter, 28, is the Linux-focused president of = De=20 Winter Information Solutions. He started programming at the age of = nine. In=20 his daily routine he is involved in UNIX/Linux, databases, security,=20 telephony-over-IP presentations, consulting and training. He's active = in the=20 Polder Linux User Group, has contributed to several GPL projects, = including=20 GnuPG, MySQL and TWIG, and is in the process of creating a brand-new = project=20 himself as well.

------=_NextPart_000_0000_01C11103.DAA7F920 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www2.linuxjournal.com/images/redblock.gif R0lGODlhCQA8AJEAAJkAAAAAAAAAAAAAACH5BAkIAAEALAAAAAAJADwAAAIVhI+py+0Po5y02ouz 3rz7D4biSEIFADs= ------=_NextPart_000_0000_01C11103.DAA7F920 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www2.linuxjournal.com/BannerAds/pcw/rackmount07-27.gif R0lGODlh1AE8APcAAP//////9//39//37/f3//f39/fv9//v3vfv5u/v7//mzvfm3u/m7/fmxebm 5vfexe/e1vfeve/exe/evd7e3vfWvdbe5vfWte/Wxe/WvffWpe/Wtd7W3u/Wrd7W1ubWtdbW1u/O te/Ore/OpebOte/OnN7OxebOrebOpdbOzubOnM7O1ubOlO/Fpc7OzubFtebFre/FlObFpe/FjN7F tebFnObFlN7FpebFjN7FnOa9pea9nMXFxea9lL3F1t69pea9jNa9tea9hN69lN69jOa1lOa1jN61 nOa1hN61lL29vd61jN61hNa1jN61c9a1hNa1e721vd6tjL21td6thM61hM61e9atjN6tc7W1tdat hM6tlLW1rdate96tY96ljNatc86thMWtlM6te86tc7Wttc6ta9ale9alc8Wtc86lhK2trcWta86l e8WljM6lc86la7Wlrc6lY8Wle7WlpcWlc8Wla72le86ce72lc86cc72la86ca6Wlpc6cY8Wce8Wc c8Wca86cUpylpb2ce8WcY7WcjL2cc72ca8WUe6Wcpb2cY8WUc7Wcc8WUa8WUY7WcY72Uc8WUWpyc nL2Ua72UY62UjLWUc72UWrWUa62Ue7WUY7WUWq2Ua5yUlL2MY8WMSrWMc5yUjK2UWrWMa5SUlLWM Y7WMWq2Ma62MY62MWq2MUrWEY7WEWrWEUq2EY4yMjK2EWqWEa62EUqWEWqWEUpSEe617Wq17UoSE hKV7Wpx7a6V7UqV7Spx7Wpx7UqVzUqVzSpxzWnt7e5xzSpxrQnNzc4xrUoxrSoRrWoxjQmtra2tr Y3NjUoxaMWNjY3taSnNaOlpaWnNSOnNKKWtKOlJSUlJSQmNKKUpKSlpCKUpCMUJCQkJCOlo6GUo6 ITo6OkoxGUIxEDExMUIpIUIpEDopGTopEDEpISkpKTEpEDEhGTEhEDEhCCEhISkhCCkZECkZCCEZ CBkZGSEZABkZEBAQEBAQCBAQAAgICAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEA AAAh+QQgLAEAACwAAAAA1AE8AAAI/gD1CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgX5tu40Z5H e/PmuXOXLt24ceDAccuWzZq0Z8uWGRuWC1apOMmOKSOmy5eunz958dJFi9YtXrN43aIVq1asp7FU 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 ------=_NextPart_000_0000_01C11103.DAA7F920 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://www2.linuxjournal.com/lj-issues/issue78/4241aa1.jpg /9j/4AAQSkZJRgABAQAAAQABAAD//gB1bWlja0B2aXNpLmNvbSwgNjUxLzc3Ni05MTUyCgpDUkVB VE9SOiBYViBWZXJzaW9uIDMuMTBhICBSZXY6IDEyLzI5Lzk0IChQTkcgcGF0Y2ggMS4yKSAgUXVh bGl0eSA9IDc1LCBTbW9vdGhpbmcgPSAwCv/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQd Gh8eHRocHCAkLicgIiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAHcA UQMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQD BQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygp KjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJma oqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/ xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQID EQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RF RkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqy s7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/ APE+tFFFaEjqWtDSdE1DWZhHZW7uM4aQjCr9TXo2leFYNCRJEj+13vJZigbb9AelY1a8YabsuMGz zqDw/q9ym+LTrgoejMm0friop9G1G2J86zlTHqK9ea7kSIyNCnmf3UKk47cZ61k6oyS2TPIL2Jsf KRP0P0Fc6xUr7I1VJHlTIynDKQfcYpv51pXMOZDgynPOZFxVPyi8m0cE+tdildGLjbQgoqV4XQnO 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 KQgooooAKKKKAP/Z ------=_NextPart_000_0000_01C11103.DAA7F920 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://www2.linuxjournal.com/lj-issues/issue78/4241aa2.jpg /9j/4AAQSkZJRgABAQAAAQABAAD//gBYQ1JFQVRPUjogWFYgVmVyc2lvbiAzLjEwYSAgUmV2OiAx Mi8yOS85NCAoUE5HIHBhdGNoIDEuMikgIFF1YWxpdHkgPSA3NSwgU21vb3RoaW5nID0gMAr/2wBD AAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5 PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAB5AFUDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAA AAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKB kaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZn aGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT 1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcI CQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6 goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk 5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDqJ7+6Nw5E7gbsAAmk+3XY5Fw/51FPj7RJz3/r UXOAc16CjGy0OJylfcsf2heDj7RJ/wB9GmtqF5xm5f8AM1Bnv2rK1DVo7aYIHVfU+lDUVuVHnloj aOpXoP8Ax8yj8ajbVL8f8vcv/fRrkv8AhK7aOco8oZP7wFTt4msjGWLkr6gVPPT8iuSqu50Z1e/H /L1J+dJ/bOoAf8fcg/GsW01e0vVzG+M+verWcj61SUHskQ3Nbmh/bWogcXsn50g1zUh/y9yfnVDv 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 ------=_NextPart_000_0000_01C11103.DAA7F920--
Valid HTML 4.01! Valid CSS!