old-www/LDP/LG/issue97/TWDT.html

1699 lines
136 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML><HEAD><TITLE> Linux Gazette Table of Contents LG #97</TITLE></HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#0000AF"
ALINK="#FF0000" >
<center>
<!-- A HREF="http://www.linuxgazette.com/">
<H1><IMG SRC="../gx/newlogo.jpg" ALT="LINUX GAZETTE" border="0"></H1></A> -->
<A HREF="http://www.linuxgazette.com/">
<H1><IMG ALT="LINUX GAZETTE" SRC="../gx/lglogo.png"
WIDTH="600" HEIGHT="124" border="0"></H1></A>
<H2>December 2003, Issue 97 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Published by <I>Linux Journal</I></H2>
<A HREF="../index.html">Front Page</A> &nbsp;|&nbsp;
<A HREF="../index.html">Back Issues</A> &nbsp;|&nbsp;
<A HREF="../lg_faq.html">FAQ</A> &nbsp;|&nbsp;
<A HREF="../mirrors.html">Mirrors</A> <!-- &nbsp;|&nbsp; --><BR>
<A HREF="../tag-kb.html">The Answer Gang knowledge base</A> (your Linux questions here!) <!-- &nbsp;|&nbsp; --><BR>
<A HREF="http://www.linuxgazette.com/search.html">Search (www.linuxgazette.com)</A>
<!-- *** BEGIN mirror site search link *** -->
<!-- &nbsp; <A HREF="http://www.linuxgazette.com/search.html">(SITE.COM
mirror)</A> -->
<!-- *** END mirror site search link *** -->
</CENTER>
<HR NOSHADE>
<!--=================================================================-->
<!-- H1><font color="#BB0000">Table of Contents:</font></H1 -->
<!-- *** BEGIN toc *** -->
<UL>
<LI> <A HREF="jayanth.html">Customizing the splash image in GRUB</A>, <EM>by C.R. Jayanth</EM>
<LI> <A HREF="jayanth2.html">A little help on installing Linux on a PC running MS Windows</A>, <EM>by C.R. Jayanth</EM>
<LI> <A HREF="smith.html">configure; make; make install</A>, <EM>by Willy Smith</EM>
<LI> <A HREF="wilson.html">Linux, At Your Service</A>, <EM>by Robert Wilson</EM>
<LI> <A HREF="santhosh.html">Familiarize Yourself with sendmail</A>, <EM>by H. Santhosh</EM>
<LI> <A HREF="staff.html">Take Command: ln</A>, <EM>by LG Staff</EM>
<LI> <A HREF="lg_bytes.html">News Bytes</A>, <EM>by LG Staff</EM>
</UL>
<!-- *** END toc *** -->
<HR NOSHADE>
<!--=================================================================-->
<H3 ALIGN="center"><EM>Linux Gazette</EM> Staff and The Answer Gang</H3>
<BLOCKQUOTE>
<STRONG>TAG Editor:</STRONG> Heather Stern<BR>
<STRONG>Senior Contributing Editor:</STRONG> Jim Dennis<BR>
<STRONG>Contributing Editors:</STRONG>
Ben Okopnik, Dan Wilder, Don Marti
</BLOCKQUOTE>
<HR NOSHADE>
<!--=================================================================-->
<A HREF="TWDT.txt.gz">TWDT 1 (gzipped text file)</A><BR>
<A HREF="TWDT.html">TWDT 2 (HTML file)</A><BR>
are files containing the entire issue: one in text format, one in HTML.
They are provided
strictly as a way to save the contents as one file for later printing in
the format of your choice;
there is no guarantee of working links in the HTML version.
<HR NOSHADE>
<!--=================================================================-->
<center>
<I>Linux Gazette</I><img alt="[tm]" src="../gx/tm.gif">,
<A HREF="http://www.linuxgazette.com/">http://www.linuxgazette.com/</A><BR>
This page maintained by the Webmaster of <I>Linux Gazette</I>,
<A HREF="mailto: webmaster@linuxgazette.com"> webmaster@linuxgazette.com</A>
<P>
<H5>Copyright &copy; 1996-2003 Specialized Systems Consultants, Inc.</H5>
</center>
<HR NOSHADE>
<!--=================================================================-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><base href="http://www.linuxgazette.com/" />
<title>
Customizing the splash image in GRUB - Linux Gazette </title>
</head>
<body>
<!-- node: "Customizing the splash image in GRUB" -->
<table cellpadding="0" cellspacing="0" style="border 0px; width: 100%;">
<tr><td colspan="2"><img src="themes/lg/images/drop.gif" alt="" title="" /> &nbsp; <b>Customizing the splash image in GRUB</b></td></tr>
<tr style="vertical-align: bottom;"><td colspan="2" style="background-color: #000000; width: 100%;"><img src="themes/lg/images/pixel.gif" width="1" height="1" alt="" title="" /></td></tr>
<tr><td><div style="color: #7c7c7c;"><small>Submitted by <a href="http://www.linuxgazette.com/user/view/552" title="View user profile.">c_r_jayanth</a> on Friday, November 7, 2003 - 10:46</small></div></td><td style="text-align: right; vertical-align: top;"></td></tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td colspan="2"><p>Customizing the splash image in GRUB<br />
<br />
The splash image is the image shown in the background when GRUB (the GRand Unified Bootloader) is displaying the list of operating systems you can boot. Typically, this is the corporate logo of your Linux distribution. But its very simple to customize it to an image of your choice. All you need is the GIMP and gzip. My GIMP version is 1.2. Even older versions may do the job.<br />
<br />
Here's how:(You need to have root access)<br />
1)Start the GIMP.<br />
2)Click on File->New or type Ctrl+N<br />
3)In the new image dialog, change Width to 640 pixels and Height to 480 pixels. (The image should be of size 640x480 pixels.) Now click OK.<br />
4)Create the image which you would like to be the splash image. It's quite fun to experiment with the various tools of the GIMP!<br />
5)After you have finished creating the image, hit Alt+i or right click on the image and click on Image->Mode->Indexed...<br />
6)In the Indexed Color Conversion dialog that appears, click on the radio button "Generate optimal Palette" and in "# of colors" enter 14. Click OK.(The image should be of only 14 colors)<br />
7)Now right-click on the image and click on File->Save As...Save the file as splash.xpm in a directory of your choice.<br />
8)Now open a terminal window and navigate to the directory where you have saved splash.xpm<br />
9)Now key in gzip splash.xpm<br />
10)You will find that a file named splash.xpm.gz is created in the directory where splash.xpm used to exist.<br />
11)Copy this splash.xpm.gz to the /boot/grub directory. You may want to back up the pre-existing splash.xpm.gz file in the /boot/grub directory first.<br />
<br />
That's it! When you reboot, you will find your image in the background, with the menu of operating systems etc. in the foreground.<br />
<br />
Of course, this is not the only way to change the image, but it is a very simple one.</p></td></tr>
</table>
<br /><br />
</table>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><base href="http://www.linuxgazette.com/" />
<title>
A little help on installing Linux on a PC running MS Windows by C,R. Jayanth - Linux Gazette </title>
</head>
<body>
<!-- node: "A little help on installing Linux on a PC running MS Windows by C,R. Jayanth" -->
<table cellpadding="0" cellspacing="0" style="border 0px; width: 100%;">
<tr><td colspan="2"><img src="themes/lg/images/drop.gif" alt="" title="" /> &nbsp; <b>A little help on installing Linux on a PC running MS Windows by C,R. Jayanth</b></td></tr>
<tr style="vertical-align: bottom;"><td colspan="2" style="background-color: #000000; width: 100%;"><img src="themes/lg/images/pixel.gif" width="1" height="1" alt="" title="" /></td></tr>
<tr><td><div style="color: #7c7c7c;"><small>Submitted by <a href="http://www.linuxgazette.com/user/view/552" title="View user profile.">c_r_jayanth</a> on Sunday, November 2, 2003 - 09:26</small></div></td><td style="text-align: right; vertical-align: top;"></td></tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td colspan="2"><p>A little help on installing Linux on a PC running MS Windows.
<p>
Complexity level: Novice/Beginner
<p>
All around the world today, many business corporations, governments and universities are switching over to the Linux operating system (OS) for their network servers and workstations. At the same time, many (adventurous?) PC owners have tried to install it on home PCs, usually already running fine on Windows, with varying degrees of success. Perhaps they just got sick of Windows. Or they are fascinated by the philosophy of Linux. Or its just plain curiosity that drives them. If you are reading this, you probably belong to this group.
<p>
Sure, for Unix/Linux illiterates, it is usually a daunting task to switch to Linux. I, for one, had a lot of problems initially: from learning to operate a new (and very different) OS to getting my video card to work; and had to spend a little money on buying books and downloading 'drivers'. But at the end of it all, I have a virus-free OS, an excellent C compiler, internet and mail programs, an image manipulator comparable to Adobe Photoshop, better memory management (I dont really know why, but it takes about 9 minutes to copy the contents of a CD (~650 MB) to the hard drive in Windows while it takes only about 2 minutes in Linux on my PC.) and a lot more for (almost) free. Besides, if a program runs only on Windows, I still have my old Windows OS for back-up. So, if you have decided to install Linux, you dont really have to lose Windows. Maybe this article will be of a little help.
<p>
Which brings us to the actual topic of this article: How to install Linux (whatever distribution) on a system which already has Windows (whatever version) installed, without losing Windows or the stored files? Some Linux distributions such as Desktop Dragon actually require Windows to be running to be setup. However, most distributions must be installed on separate partitions. The actual installation is quite pain-free, so dont grumble to take a few simple precautions before installation to ensure that you have a PC that can run two operating systems (albeit not simultaneously!).
<p>
First, for a few basics. You probably know all of this, but skim through it anyway.
<br>
1. Operating System (OS): It is the software that lets you control and use your computer. Windows, UNIX, Linux, OS/2 are all OSs, while Winamp, Netscape Navigator and all others are mere programs that run on the OS.
<br>
2. The hard disk (or hard drive): It is the part of your computer which stores your program, data and other files permanently, i.e., the contents of the hard drive will not get erased when the power is turned off, but you can add or remove data from the hard drive using your OS.
<br>
3. Disk formatting: To read/write the information on a hard disk, the disk should be organized into identifiable parts so that the computer would know where to look or write. The basic form of this organization is formatting. Hard disks must be formatted in 2 ways: (i) Physical formatting, which is done by the manufacturer. (ii) Logical formatting, which should be done after the physical formatting. Logical formatting creates a file system on the disk. Different OSs require different file systems and hence different types of logical formatting.
<br>
4. File system: The file system is an arrangement for managing data. Different OSs use and recognize different file systems. DOS uses FAT file system, while Windows 98 uses FAT32. Windows 2000 use NTFS system. Linux uses ext2 or ext3 and swap file systems. Windows XP can recognize FAT, FAT32 and NTFS file systems while Linux can recognize all these and also its own file systems. Newer versions of Linux support many more file systems.
<br>
5. Partitions: A partition is a separate physical section of the hard disk. It is created after the physical formatting and before the logical formatting. If your hard disk has more than one partition (which is usually true), each partition functions as an individual unit, and can be logically formatted with any desired file system. So you can have more than one file system on your hard disk, which means you can have more than one OS. But there are certain restrictions.
<p>
There are 3 types of partitions: Primary, Extended and Logical. A primary partition is a main disk division. Most OSs can be installed and booted from only primary partitions. One hard disk may contain up to four primary partitions, or three primary partitions and one extended partition. At a time only one primary partition may be visible and active, all others are hidden. An extended partition cannot hold any data by itself but you can further physically divide the disk space in it by creating an unlimited number of logical partitions, each with a different file system. The extended partition is meant to overcome the 4 partition limit. Logical partitions and are meant to contain only data files and OSs that can be booted from a logical partition such as Linux and Windows XP.
<p> If you already have Windows installed, it is almost certainly on a primary partition. Also, most home PCs have just one primary partition. I recommend that you install Linux on a logical partition.
<p>
Now, all you have to do before installing Linux is to create additional partitions that can hold Linux. The idea of this article is to help you in doing just that (Without damaging Windows).Of course, we are presuming that Linux can actually run on your hardware and that you have already verified this with the hardware compatibility list of the Linux distribution. Also, you must be familiar with the setup process before beginning.
<p>
Lets follow step-by-step, what I actually did and what you probably should do.
<p>
Step 1. I first got hold of the bootable setup CDs of RHL 7.2. I then started up my PC, while repeatedly pressing the DEL key, to enter the BIOS settings. Then, I changed the first boot device to CDROM drive, second boot device to FDD A(Floppy Disk Drive A) and third boot device to HDD 0 (Boot sector of Hard Disk Drive).
Comments: Obviously, the first step would be to get your hands on the Linux setup files. You have a choice of several distributions including Debian, Mandrake, RedHat etc. If you want support and service, you have the option of either buying a boxed set from a company or depending on the large number of open-minded individuals on the internet who are dedicated to solving the problems of the Linux community out of the goodness of their hearts. If you opt for the latter, you can get the setup files by downloading them from the internet and burning them onto CDs, or you can get free CDs with some magazines, or you can borrow them from a friend etc.
<p> You can setup Linux from CDs, DVDs, the hard drive or over a network. I would recommend CD based install which is quite hassle free. If your first installation CD is bootable, great! Otherwise you have to create a boot floppy. For RHL, you can do this in Windows or DOS using rawrite.exe or rawritewin.exe in the dosutils folder on the 1st disk. If you are using a boot floppy, you need not change the boot priority as I did.
<p>
Step 2. Next I inserted the first setup disk into the CDROM drive and restarted the computer.
<br>
Comments: Wrong move! Once you insert the CD and restart, the setup process begins. And before the setup begins, you are supposed to know and expect what happens during setup and what input you should give during the setup. Although you can just quit setup, why waste the precious seconds of your life by being unprepared? Read as much as you can on the actual setup process so that you know and expect. Even if you have memorized the setup procedure, keep a hard copy of the setup manual at hand, just to be on the safer side.
<p>
Step 3. The graphical setup program starts. I select English as the language for setup. The program detects my keyboard and mouse (But my scroll mouse is detected as a 3 button mouse. Newer distributions have fixed the problem.) It now asks for the partitions to install Linux on. I am given 3 options: One to partition automatically and the other two to partition manually with Disk Druid or Linux FDISK. I choose to partition automatically, assuming that Linux will create the required partitions out of the available free space on the disk. Then, setup flashes a warning saying "All existing data will be wiped out! Do you want to continue?". D-oh! I cancel, go back and choose manual partitioning using Disk Druid. Now I am presented with a diagram showing my 2 precious partitions. I have the option of deleting either of them to make space for Linux. At this point, I realize that I goofed up by not being sufficiently prepared before starting setup. Its CTRL+ALT+DEL for restart.
<p>
Step 4. I remove the Linux CD from the drive before the setup program starts again, start Windows, log on to the internet and do some research. It turns out that to install (most flavors of) Linux, you need at least 2 partitions: One "root" partition (denoted by '/') and one "swap" partition. The root partition must be big enough to hold all your Linux programs and files (Please refer to your Linux documentation to find out the exact size. Mine is about 4 GB and about 2 GB of it is occupied by system files.) and the swap partition should be double the size of your RAM. Moreover, these partitions need not be primary partitions, unlike the requirement in Windows 9x. OK, so we now know what partitions are necessary. So how do we create them? There are programs specifically written to facilitate safe partitioning, such as Powerquest Partition Magic. There were a few demo-version partitioning programs for free download on the net. But to download at my connection speed would take hours. Waitaminute!! Isnt there a program called fdisk in DOS that can manipulate partitions?
<p>
Step 5. I start an MSDOS console and hit fdisk /? <Enter>.It gives a message "Configures a hard disk for use with MS-DOS....” But I want to configure the disk for use with the Linux ext2 file system. Have I come to the wrong program? I now key in fdisk <Enter>.It asks "Do you want to enable large disk support?” I answer Yes. Next I am given a menu:
<br>
1. Create DOS partition or Logical DOS Drive
<br> 2. Set active partition
<br> 3. Delete partition or Logical DOS Drive
<br> 4. Display partition information
<p>
Hmmm. If I now create DOS partitions of the size required for Linux, I can later format the partitions in the ext2 format during Linux setup. The important thing is to create the partitions, not whether they are DOS or Linux partitions.
<p> I first check out the partition information. There are 2 partitions with no free (unallocated) space. I exit fdisk and check the available free space on the partitions. D drive has 5 GB free space out of about 19 GB. If I could somehow split this partition into 3 partitions: 3-4 GB for root partition, 256 MB for swap partition and the remaining for D drive, everything would be just nice. To do so using fdisk, I would have to:
<br>1. Remove all data from D drive and store it elsewhere.
<br>2. Delete D drive using option 3 of fdisk menu.
<br>3. Create the 3 required partitions by using option 1 of fdisk menu three times.
<br>4. Return the data to D drive (ie the largest of the 3 partitions.)
<p>
Step 6. Now all the data from D drive cannot be moved into C drive, there is just not enough space. So I run to my friend's place, get his hard drive, plug it into my computer in the slave configuration, and transfer some of the data into it. The rest of the data, I transfer to the C drive. So D drive is finally empty! Next, I start fdisk again, and choose to "Delete partition or Logical DOS Drive". Next, I choose to delete logical DOS drive(s) in the Extended Partition. Then I choose to delete D drive. Now, from the first menu, I select "Create DOS partition or Logical DOS Drive". In the following menu, I choose "Create Logical DOS Drive(s) in the Extended DOS Partition". Next, I specify the size of the partition, about 3 GB. Similarly, I create the other 2 partitions. Its time to restart again.
Comments: You probably dont need to connect another hard disk to empty the contents of a partition. You can probably store the contents somewhere safe on your network or to a laptop via a LAN card or to a storage device via USB port. If you have no other option, take the help of an expert. Of course, it is a simple procedure, and you can probably get it right without anyone's help.
<p>
Step 7. Now we're ready to try installation again. This time around, when the setup asks me to specify the partitioning method, I confidently choose to partition manually using Disk Druid. Next, I choose to format the 3 GB partition as root (/) with ext3 file system. Since I am installing Linux on a logical partition, I am warned that the partition may not meet boot requirements and strongly recommended to create a boot diskette. No problem. The 256 MB partition is formatted as swap.
<p>
Step 8. When installing Linux, its best that LiLo (the boot loader) is installed to the root superblock (boot sector equivalent) of the Linux partition, not the Master Boot Record (MBR). You can let the setup modify the MBR, but if you reinstall Windows, Linux will be rendered inaccessible. Dont forget to create a boot diskette!
<p> Thats about it! The rest of the setup should proceed without any glitches and you will have a dual boot computer. You will be presented a convenient menu by the bootloader (GRUB or LiLo or a commercial bootloader that you have installed) every time your computer starts. From this menu, you can choose the OS to boot: either Linux or DOS (Windows).
<p>
IMPORTANT! I repeat, do not set up partitions with Linux FDISK or Disk Druid; they may render partition tables unreadable to other operating systems. You can use them to change partition types and set partition mount points, but that is all.
<hr>
<CENTER><SMALL><STRONG>
Copyright &copy; 2003, C.R. Jayanth.
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 96 of <i>Linux Gazette</i>, November 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** --></p></td></tr>
</table>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><base href="http://www.linuxgazette.com/" />
<title>
configure; make; make install - Linux Gazette </title>
</head>
<body>
<!-- node: "configure; make; make install" -->
<table cellpadding="0" cellspacing="0" style="border 0px; width: 100%;">
<tr><td colspan="2"><img src="themes/lg/images/drop.gif" alt="" title="" /> &nbsp; <b>configure; make; make install</b></td></tr>
<tr style="vertical-align: bottom;"><td colspan="2" style="background-color: #000000; width: 100%;"><img src="themes/lg/images/pixel.gif" width="1" height="1" alt="" title="" /></td></tr>
<tr><td><div style="color: #7c7c7c;"><small>Submitted by <a href="http://www.linuxgazette.com/user/view/395" title="View user profile.">Willy</a> on Saturday, November 22, 2003 - 12:55</small></div></td><td style="text-align: right; vertical-align: top;"></td></tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td colspan="2"><p>Over and over I have heard people say that you just use the usual
configure, make, make install sequence to get a program running.
Unfortunately, most people using computers today have never used a
compiler or written a line of program code.
With the advent of graphical user interfaces and applications builders,
there are lots of serious programmers who have never done this.
<p>
What you have are three steps, each of which will use a whole host of
programs to get a new program up and running.
Running configure is relatively new compared with the use of make.
But, each step has a very distinct purpose.
I am going to explain the second and third steps first, then come back
to configure.
<p>
The make utility is embedded in UNIX history.
It is designed to decrease a programmer's need to remember things.
I guess that is actually the nice way of saying it decreases a
programmer's need to document.
In any case, the idea is that if you establish a set of rules to create
a program in a format make understands, you don't have to remember them
again.
<p>
To make this even easier, the make utility has a set of built-in rules
so you only need to tell it what new things it needs to know to build
your particular utility.
For example, if you typed in <code>make love</code>, make would first
look for some new rules from you. If you didn't supply it any then it
would look at its built-in rules.
One of those built-in rules tells make that it can run the linker (ld)
on a program name ending in .o to produce the executable program.
<p>
So, make would look for a file named love.o.
But, it wouldn't stop there.
Even if it found the .o file, it has some other rules
that tell it to make sure the .o file is up to date.
In other words, newer than the source program.
The most common source program on Linux systems is written in C and
its file name ends in .c.
<p>
If make finds the .c file (love.c in our example) as well as the .o
file, it would check their timestamps to make sure the .o was newer.
If it was not newer or did not exist, it would use another built-in
rule to build a new .o from the .c (using the C compiler).
This same type of situation exists for other programming languages.
The end result, in any case, is that when make is done, assuming it can
find the right pieces, the executable program will be built and up to
date.
<p>
The old UNIX joke, by the way, is what early versions of make said when
it could not find the necessary files. In the example above, if there
was no love.o, love.c or any other source format, the program would
have said:<br>
<code>make: don't know how to make love. Stop.</code>
<p>
Getting back to the task at hand, the default file for additional rules
in Makefile in the current directory.
If you have some source files for a program and there is a Makefile
file there, take a look. It is just text.
The lines that have a word followed by a colon are targets. That is,
these are words you can type following the make command name to do
various things.
If you just type make with no target, the first target will be
executed.
<p>
What you will likely see at the beginning of most Makefile files are
what look like some assignment statements. That is, lines with a couple
of fields with an equal sign between them.
Surprise, that is what they are.
They set internal variables in make.
Common things to set are the location of the C compiler (yes, there is
a default), version numbers of the program and such.
<p>
This now beings up back to configure. On different systems, the C
compiler might be in a different place, you might be using ZSH instead
of BASH as your shell, the program might need to know your host name,
it might use a dbm library and need to know if the system had gdbm or
ndbm and a whole bunch of other things.
You used to do this configuring by editing Makefile. Another pain for
the programmer and it also meant that any time you wanted to install
software on a new system you needed to do a complete inventory of what
was where.
<p>
As more and more software became available and more and more
POSIX-compliant platforms appeared, this got harder and harder.
This is where configure comes in.
It is a shell script (generally written by GNU Autoconf) that goes up
and looks for software and even tries various things to see what works.
It then takes its instructions from Makefile.in and builds Makefile
(and possibly some other files) that work on the current system.
<p>
Background work done, let me put the pieces together.
<ul>
<li> You run configure (you usually have to type <code>./configure</code> as most people don't have the current directory in their search path). This builds a new Makefile.
<li> Type <code>make</code> This builds the program. That is, make would be executed, it would look for the first target in Makefile and do what the instructions said. The expected end result would be to build an executable program.
<li> Now, as root, type <code>make install</code>. This again invokes make, make finds the target install in Makefile and files the directions to install the program.
</ul>
<p>
This is a very simplified explanation but, in most cases, this is what
you need to know. With most programs, there will be a file named
INSTALL that contains installation instructions that will fill you in
on other considerations. For example, it is common to supply some
options to the configure command to change the final location of the
executable program. There are also other make targets such as clean
that remove unneeded files after an install and, in some cases test
which allows you to test the software between the make and make install
steps.</p></td></tr>
</table>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><base href="http://www.linuxgazette.com/" />
<title>
Linux, At Your Service - Linux Gazette </title>
</head>
<body>
<!-- node: "Linux, At Your Service" -->
<table cellpadding="0" cellspacing="0" style="border 0px; width: 100%;">
<tr><td colspan="2"><img src="themes/lg/images/drop.gif" alt="" title="" /> &nbsp; <b>Linux, At Your Service</b></td></tr>
<tr style="vertical-align: bottom;"><td colspan="2" style="background-color: #000000; width: 100%;"><img src="themes/lg/images/pixel.gif" width="1" height="1" alt="" title="" /></td></tr>
<tr><td><div style="color: #7c7c7c;"><small>Submitted by <a href="http://www.linuxgazette.com/user/view/550" title="View user profile.">BobW</a> on Friday, November 21, 2003 - 03:20</small></div></td><td style="text-align: right; vertical-align: top;"></td></tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td colspan="2"><p>For the first few years of working with Linux I heard people talk about
ports, protocols and services and I just hoped I could ignore them and
keep getting my work done. Usually, this was the case but I eventually
decided to bite the bullet and see what all this was about. This
article won't tell you everything there is to know but it should help
you put together the pieces.
<p>
One of the most helpful crib sheets in learning about all this stuff is
a file on your system.
In virtually all systems it is named <code>/etc/services</code>. It is
just an plain ASCII file which provides a mapping between textual names
for services and their assigned port numbers and protocol types. You
may have noticed that all three buzzwords appeared in that one
sentence. They appear in that file as well. I include a few lines from
that file to give you an idea what I am talking about. I have included
the comments from the top of the file so we can talk about them as
well.
<pre>
#
# Network services, Internet style
#
# Note that it is presently the policy of IANA to assign a single well-known
# port number for both TCP and UDP; hence, most entries here have two entries
# even if the protocol doesn't support UDP operations.
#
# This list could be found on:
# http://www.iana.org/assignments/port-numbers
#
# (last updated 2002 January 15)
#
# The port numbers are divided into three ranges: the Well Known Ports,
# the Registered Ports, and the Dynamic and/or Private Ports.
#
# The Well Known Ports are those from 0 through 1023.
#
# The Registered Ports are those from 1024 through 49151
#
# The Dynamic and/or Private Ports are those from 49152 through 65535
#
#### UNASSIGNED PORT NUMBERS SHOULD NOT BE USED. THE IANA WILL ASSIGN
# THE NUMBER FOR THE PORT AFTER YOUR APPLICATION HAS BEEN APPROVED ###
#
#
# WELL KNOWN PORT NUMBERS
#
# The Well Known Ports are assigned by the IANA and on most systems can
# only be used by system (or root) processes or by programs executed by
# privileged users.
#
# Ports are used in the TCP [RFC793] to name the ends of logical
# connections which carry long term conversations. For the purpose of
# providing services to unknown callers, a service contact port is
# defined. This list specifies the port used by the server process as
# its contact port. The contact port is sometimes called the
# "well-known port".
#
# To the extent possible, these same port assignments are used with the
# UDP [RFC768].
#
# The range for assigned ports managed by the IANA is 0-1023.
#
# Port Assignments:
#
# 0/tcp Reserved
# 0/udp Reserved
tcpmux 1/tcp # TCP Port Service Multiplexer
tcpmux 1/udp # TCP Port Service Multiplexer
...
ftp-data 20/tcp # File Transfer [Default Data]
ftp-data 20/udp # File Transfer [Default Data]
ftp 21/tcp # File Transfer [Control]
fsp 21/udp # official is File Transfer, ftp use no udp
ssh 22/tcp # SSH Remote Login Protocol
ssh 22/udp # SSH Remote Login Protocol
telnet 23/tcp # Telnet
telnet 23/udp # Telnet
</pre>
<p>
There is a whole lot to talk about already. If you look at the last few
lines you will see lines that start with ftp, ssh and telnet. If you
have never heard of any of those names you probably need to read a
different article. However, if you do know what they are, a light may
have just come on for you.
<p>
What these lines tell you is that ftp uses ports 20 and 21, ssh uses
port 22 and telnet uses port 23. If you use command line versions of
these programs you might have noticed you could specify a port number.
If you are curious, type <code>ftp --help</code> or <code>telnet
--help</code> and see what you get. With ftp, you use the -P option to
specify a port. With telnet, the port number just follows the hostname.
With either command, the port number is optional. What that means is
that if you don't specify it then the program uses the default port.
<p>
Looking back at the file you can see that each port number is followed
by a slash and "tcp" or "udp". These are two standard Internet
protocols. UDP is connectionless. What this means is that one computer
can sent a message to another computer without asking permission first.
The problem is that the sender will not know if the other system ever
received the message. The buzzword here is <i>unreliable</i>.
<p>
The TCP protocol is <i>reliable</i> which just means that the sender
and receiver talk to each other to make sure everything worked. Each
protocol has a purpose. For example, when the systems want to establish
a connection, sending a UDP message to that effect makes sense. It is
just faster and easier.
<p>
So far, we have been talking about services that run on well known port
numbers. Here are a few more that will likely be familiar to you.
<pre>
smtp 25/tcp mail # Simple Mail Transfer
smtp 25/udp mail # Simple Mail Transfer
http 80/tcp # World Wide Web HTTP
http 80/udp # World Wide Web HTTP
pop2 109/tcp # Post Office Protocol - Version 2
pop2 109/udp # Post Office Protocol - Version 2
pop3 110/tcp # Post Office Protocol - Version 3
pop3 110/udp # Post Office Protocol - Version 3
nntp 119/tcp # Network News Transfer Protocol
nntp 119/udp # Network News Transfer Protocol
imap 143/tcp imap2 # Internet Message Access Protocol
imap 143/udp imap2 # Internet Message Access Protocol
imap3 220/tcp # Interactive Mail Access Protocol v3
imap3 220/udp # Interactive Mail Access Protocol v3
imaps 993/tcp # imap4 protocol over TLS/SSL
imaps 993/udp # imap4 protocol over TLS/SSL
</pre>
<p>
You will certainly know about port 80. In addition, you can see that
the various mail protocols have an assortment of ports. imaps is a
secure connection for fetching your mail from a mail server. I should
mention that you now can see two uses of the word protocol. First, in
TCP or UDP and second in the protocol of the actual content. For
example, SMTP stands for Simple Mail Transfer Protocol. Don't get
confused--TCP and UDP have to do with the protocol for getting the
message to the other end. The second use of the word protocol has to do
with the specifics of the message content.
<p>
SMTP is the most common way a computer sends email to another computer.
Your computer might send the message directly or it might send it thru
what is called a smart host. In any case, the mail message is
transfered by some computer connecting to the recipient computer using
port 25 and then communicating using the SMTP protocol. This is a
simple protocol and you can use your local telnet command to explore
how it works. Just for kicks, try a command like this<br>
<code> telnet My_Favorite_Host.com 25</code><br>
but replace My_Favorite_Host.com with a computer that is listening on
port 25. I tried mail.osdn.com.
<p>
You should see a message about the connection succeeding and then you
are likely to not even get a prompt. If you are connected, try typing
<code>help</code> and pressing the Enter key. Generally you will get a
terse message of the commands that are supported. Here is what I got.
<pre>
sid@firefly:/tmp> telnet mail.osdn.com 25
Trying 66.35.250.105...
Connected to mail.osdn.com.
Escape character is '^]'.
220 sc8-osdn-mail.osdn.com ESMTP Exim 3.35 #1 Sun, 16 Nov 2003 11:44:51-0800
help
214-Commands supported:
214- HELO EHLO MAIL RCPT DATA AUTH
214 NOOP QUIT RSET HELP
quit
221 sc8-osdn-mail.osdn.com closing connection
Connection closed by foreign host.
sid@firefly:/tmp>
</pre>
<p>
Is this starting to make some sense? Ok, let me give you a new
buzzword. When I performed the telnet connection, the remote computer
was <i>listening</i> on port 25. This is actually just what it sounds
like. There was a programming running that was just waiting for someone
to try to connect to port 25. When telnet sent the request, that
program established the connection. Some programs that are listening
can only connect to one computer at a time, others can handle multiple
connections.
<p>
Finally, I want to explain about the registered ports, which are the
ports whose numbers are above 1024. In order for a program to listen on
the ports that we have already covered, it has to be started as root.
This didn't mean the program continued to run as root. This is actually
pretty common. The apache web server, for example, is generally started
as root, it does any necessary setup such as binding to port 80 and
then changes it user ID to something less powerful--generally nobody or
some other ordinary user.
<p>
On these higher numbered ports, any program can bind to them. Below I
have included a few of the more common ones.
<pre>
mysql 3306/tcp # MySQL
mysql 3306/udp # MySQL
x11 6000/tcp # X Window System
x11 6000/udp # X Window System
...
x11 6019/tcp # X Window System
x11 6019/udp # X Window System
x11 6063/tcp # X Window System
x11 6063/udp # X Window System
gnutella-svc 6346/tcp # gnutella-svc
gnutella-svc 6346/udp # gnutella-svc
gnutella-rtr 6347/tcp # gnutella-rtr
gnutella-rtr 6347/udp # gnutella-rtr
http-alt 8008/tcp # HTTP Alternate
http-alt 8008/udp # HTTP Alternate
http-alt 8080/tcp # HTTP Alternate (see port 80)
http-alt 8080/udp # HTTP Alternate (see port 80)
</pre>
<p>
The first one, mysql, should help explain why it doesn't seem to matter
if MySQL is running on your local computer or another system.
Communication with it is thru a port so the only thing that changes is
the hostname in the connection message.
<p>
Ports 8008 and 8080 are of interest if you are testing out a new web
server or want to run more than one web server on the same computer.
Because you don't have to be root to bind to ports 8008 or 8080 you can
test a web server or even run one on a machine where you don't have
root access.
<p>
I hope this introduction to ports, protocols and services has been
helpful to you. I welcome your comments.</p></td></tr>
</table>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><base href="http://www.linuxgazette.com/" />
<title>
Familiarize Yourself with sendmail - Linux Gazette </title>
</head>
<body>
<!-- node: "Familiarize Yourself with sendmail" -->
<table cellpadding="0" cellspacing="0" style="border 0px; width: 100%;">
<tr><td colspan="2"><img src="themes/lg/images/drop.gif" alt="" title="" /> &nbsp; <b>Familiarize Yourself with sendmail</b></td></tr>
<tr style="vertical-align: bottom;"><td colspan="2" style="background-color: #000000; width: 100%;"><img src="themes/lg/images/pixel.gif" width="1" height="1" alt="" title="" /></td></tr>
<tr><td><div style="color: #7c7c7c;"><small>Submitted by <a href="http://www.linuxgazette.com/user/view/726" title="View user profile.">h.santhosh@timk...</a> on Saturday, November 22, 2003 - 15:24</small></div></td><td style="text-align: right; vertical-align: top;"></small></td></tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td colspan="2"><p><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=iso-8859-1">
<TITLE>Familiarize Yourself with sendmail</TITLE>
<META NAME="GENERATOR" CONTENT="OpenOffice.org 1.0.2 (Linux)">
<META NAME="CREATED" CONTENT="20031122;17281600">
<META NAME="CHANGED" CONTENT="20031122;18152100">
<META NAME="ProgId" CONTENT="OpenOffice Document">
<META NAME="Originator" CONTENT="Open Office">
<META NAME="Info 3" CONTENT="www.openoffice.org">
<!--[if gte mso 9]><xml>
<o:DocumentProperties>
<o:Author>Santhosh</o:Author>
<o:LastAuthor>Santhosh</o:LastAuthor>
<o:Revision>9</o:Revision>
<o:TotalTime>86</o:TotalTime>
<o:Created>2003-11-12T08:29:00Z</o:Created>
<o:LastSaved>2003-11-12T08:37:00Z</o:LastSaved>
<o:Pages>7</o:Pages>
<o:Words>2870</o:Words>
<o:Characters>16362</o:Characters>
<o:Company>Timken</o:Company>
<o:Lines>136</o:Lines>
<o:Paragraphs>32</o:Paragraphs>
<o:CharactersWithSpaces>20093</o:CharactersWithSpaces>
<o:Version>9.6926</o:Version>
</o:DocumentProperties>
</xml><![endif]-->
<!--[if gte mso 9]><xml>
<w:OpenOfficeDocument>
<w:DoNotHyphenateCaps/>
<w:PunctuationKerning/>
<w:DrawingGridHorizontalSpacing>6 pt</w:DrawingGridHorizontalSpacing>
<w:DrawingGridVerticalSpacing>6 pt</w:DrawingGridVerticalSpacing>
<w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
<w:DisplayVerticalDrawingGridEvery>3</w:DisplayVerticalDrawingGridEvery>
<w:UseMarginsForDrawingGridOrigin/>
<w:DoNotShadeFormData/>
<w:Compatibility>
<w:FootnoteLayoutLikeWW8/>
<w:ShapeLayoutLikeWW8/>
<w:AlignTablesRowByRow/>
<w:ForgetLastTabAlignment/>
<w:LayoutRawTableWidth/>
<w:LayoutTableRowsApart/>
</w:Compatibility>
</w:OpenOfficeDocument>
</xml><![endif]-->
<STYLE>
<!--
H1 { color: #000000 }
P { color: #000000 }
H2 { color: #000000 }
A:link { color: #0000ff }
A:visited { color: #800080 }
-->
</STYLE>
</HEAD>
<BODY LANG="en-US" TEXT="#000000" LINK="#0000ff" VLINK="#800080">
<P STYLE="margin-bottom: 0cm">&nbsp;</P>
<H2><SPAN STYLE="text-decoration: none"><SPAN STYLE="font-weight: normal"><FONT SIZE=3><FONT FACE="Times New Roman">When
we do a default Linux server installation you will find the default
/etc/mail/sendmail.mc . This file has various macros defined and with
very little explanation. Firstly, preview your default <a target="_blank" href="http://www.linuxgazette.com/node/view/160">sendmail.mc</a>. Than the below article explains the details for most of the
macros defined in sendmail.mc in the same order. For more information
refer to <A target="_blank" HREF="http://www.linuxgazette.com/node/view/159">Sendmail.mc Explained</a><p>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>===============================================================================</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>divert(-1)</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>dnl
This is the sendmail macro config file. If you make changes to this
file,</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>dnl
you need the sendmail-cf rpm installed and then have to generate </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>dnl
new /etc/mail/sendmail.cf by running the following command:</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>dnl</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>dnl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
m4 /etc/mail/sendmail.mc &gt; /etc/mail/sendmail.cf</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>dnl</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;</FONT></FONT></P>
<P>include('/usr/share/sendmail-cf/m4/cf.m4')</P>
<P ALIGN=JUSTIFY>This is a requirement in order to process the macro
file and generate the
</P>
<P ALIGN=JUSTIFY>sendmail.cf file. This include the cf.m4 macro files
which contains lots of macro definition for the rest of the file.</P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;</FONT></FONT></P>
<H1>VERSIONID('linux setup for Red Hat Linux')dnl</H1>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
VERSIONID is a macro that stuffs the version information into the
resulting file.&nbsp; You could use SCCS, RCS, CVS, something else,
or omit it completely.&nbsp; This is not the same as the version id
included in SMTP greeting messages -- this is defined in
m4/version.m4.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>OSTYPE('linux')</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
You must specify an OSTYPE to properly configure things such as the
pathname of the help and status files, the flags needed for the local
mailer, and other important things.&nbsp; If you omit it, you will
get an error when you try to build the configuration.&nbsp; Look at
the ostype directory for the list of known operating system types.
DOMAIN('CS.Berkeley.EDU')dnl This example is specific to the Computer
Science Division at Berkeley. You can use &quot;DOMAIN('generic')&quot;
to get a sufficiently bland definition that may well work for you, or
you can create a customized domain definition appropriate for your
environment.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>dnl
define('SMART_HOST','smtp.your.provider')</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>Uncomment
and edit the following line if your mail needs to be sent out through
an external mail server:</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>define('confDEF_USER_ID',''8:12'')dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
confDEF_USER_ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
DefaultUser [1:1] Default user id.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>undefine('UUCP_RELAY')dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
UUCP_RELAY&nbsp; The host that will accept UUCP-addressed email.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
If not defined, all UUCP sites must be directly connected.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>undefine('BITNET_RELAY')dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
BITNET_RELAY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The host that will accept
BITNET-addressed email.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
If not defined, the .BITNET pseudo-domain won't work.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>dnl
define('confAUTO_REBUILD')dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>define('confTO_CONNECT',
'1m')dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>confTO_CONNECT&nbsp;&nbsp;&nbsp;
Timeout.connect&nbsp;&nbsp; [0] The timeout waiting for an initial
connect() to complete.&nbsp; This can only shorten connection
timeouts; the kernel silently enforces an absolute maximum (which
varies depending on the system).</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>define('confTRY_NULL_MX_LIST',true)dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
confTRY_NULL_MX_LIST&nbsp;&nbsp;&nbsp; TryNullMXList[False] If this
host is the best MX</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for a host and other arrangements</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
haven't been made, try connecting</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
to the host directly; normally this</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
would be a config error.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>define('confDONT_PROBE_INTERFACES',true)dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>confDONT_PROBE_INTERFACES&nbsp; DontProbeInterfaces</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
[False] If set, sendmail will _not_</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
insert the names and addresses of any</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
local interfaces into class {w}</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
(list of known &quot;equivalent&quot; addresses).</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
If you set this, you must also include</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
some support for these addresses (e.g.,</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
in a mailertable entry) -- otherwise,</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mail to addresses in this list will</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
bounce with a configuration error.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
If set to &quot;loopback&quot; (without</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
quotes), sendmail will skip</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
loopback interfaces (e.g., &quot;lo0&quot;).</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B></FONT></FONT>
</P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>define('PROCMAIL_MAILER_PATH','/usr/bin/procmail')dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>PROCMAIL_MAILER_PATH&nbsp;&nbsp;&nbsp; [/usr/local/bin/procmail]
The path to the procmail program.&nbsp; This is also used by
FEATURE('local_procmail').</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>define('ALIAS_FILE',
'/etc/aliases')dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>ALIAS_FILE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
[/etc/mail/aliases] The location of the text version</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
of the alias file(s).&nbsp; It can be a comma-separated</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
list of names (but be sure you quote values with</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
commas in them -- for example, use define('ALIAS_FILE', 'a,b')</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
to get &quot;a&quot; and &quot;b&quot; both listed as alias files;</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
otherwise the define() primitive only sees &quot;a&quot;).</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>dnl
define('STATUS_FILE', '/etc/mail/statistics')dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>STATUS_FILE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
[/etc/mail/statistics] The file containing status information.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>define('UUCP_MAILER_MAX',
'2000000')dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>UUCP_MAILER_MAX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
[100000] The maximum size message accepted for transmission by the
UUCP mailers.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>define('confUSERDB_SPEC',
'/etc/mail/userdb.db')dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>confUSERDB_SPEC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
UserDatabaseSpec</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
[undefined] User database specification.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>define('confPRIVACY_FLAGS',
'authwarnings,novrfy,noexpn,restrictqrun')dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>confPRIVACY_FLAGS PrivacyOptions&nbsp;&nbsp;&nbsp; [authwarnings]
Privacy flags.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>define('confAUTH_OPTIONS',
'A')dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>confAUTH_OPTIONS&nbsp; AuthOptions [undefined] If this option is
'A'</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
then the AUTH= parameter for the</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
MAIL FROM command is only issued</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
when authentication succeeded.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Other values (which should be listed</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
one after the other without any</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
intervening characters except for</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
space or comma) are a, c, d, f, p,</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
and y.&nbsp; See doc/op/op.me for</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
details.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>define('confMAX_MESSAGE_SIZE','100')dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>confMAX_MESSAGE_SIZE&nbsp;&nbsp;&nbsp; MaxMessageSize&nbsp;&nbsp;&nbsp;
[infinite] The maximum size of </FONT></FONT>
</P>
<P STYLE="margin-left: 5.08cm; margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>messages
that will be accepted (in bytes).</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>dnl
TRUST_AUTH_MECH('EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>Per default, relaying is allowed for any user who authenticated</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>via
a &quot;trusted&quot; mechanism, i.e., one that is defined via
TRUST_AUTH_MECH('list of mechanisms')</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>For
example: TRUST_AUTH_MECH('KERBEROS_V4 DIGEST-MD5')</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>dnl
define('confAUTH_MECHANISMS', 'EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5
LOGIN PLAIN')dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>confAUTH_MECHANISMS&nbsp;&nbsp;&nbsp;&nbsp; AuthMechanisms&nbsp;&nbsp;&nbsp;
[GSSAPI KERBEROS_V4 DIGEST-MD5</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CRAM-MD5] List of authentication</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mechanisms for AUTH (separated by</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
spaces).&nbsp; The advertised list of</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
authentication mechanisms will be the</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
intersection of this list and the list</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
of available mechanisms as determined</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
by the CYRUS SASL library.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>dnl
define('confCACERT_PATH','/usr/share/ssl/certs')</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>confCACERT_PATH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CACERTPath&nbsp; [undefined] Path to directory</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
with certs of CAs.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>dnl
define('confCACERT','/usr/share/ssl/certs/ca-bundle.crt')</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>confCACERT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CACERTFile&nbsp;
[undefined] File containing one CA</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cert.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>dnl
define('confSERVER_CERT','/usr/share/ssl/certs/sendmail.pem')</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>confSERVER_CERT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ServerCertFile&nbsp;&nbsp;&nbsp; [undefined] File containing the</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cert of the server, i.e., this cert</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
is used when sendmail acts as</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
server.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>dnl
define('confSERVER_KEY','/usr/share/ssl/certs/sendmail.pem')</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>confSERVER_KEY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ServerKeyFile&nbsp;&nbsp;&nbsp;&nbsp; [undefined] File containing the</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
private key belonging to the server</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cert.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>dnl
define('confTO_QUEUEWARN', '4h')dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>confTO_QUEUEWARN&nbsp; Timeout.queuewarn</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
[4h] The timeout before a warning</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
message is sent to the sender telling</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
them that the message has been</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
deferred.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>dnl
define('confTO_QUEUERETURN', '5d')dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>confTO_QUEUERETURN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Timeout.queuereturn</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
[5d] The timeout before a message is</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
returned as undeliverable.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>dnl
define('confQUEUE_LA', '12')dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>confQUEUE_LA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
QueueLA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
[varies] Load average at which</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
queue-only function kicks in.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Default values is (8 * numproc)</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
where numproc is the number of</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
processors online (if that can be</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
determined).</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>dnl
define('confREFUSE_LA', '18')dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>confREFUSE_LA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
RefuseLA&nbsp;&nbsp;&nbsp; [varies] Load average at which</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
incoming SMTP connections are</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
refused.&nbsp; Default values is (12 *</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
numproc) where numproc is the</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
number of processors online (if</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
that can be determined).</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>define('confTO_IDENT',
'0')dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>confTO_IDENT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Timeout.ident&nbsp;&nbsp;&nbsp;&nbsp; [5s] The timeout waiting for a</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
response to an IDENT query.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>dnl
FEATURE(delay_checks)dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>delay_checks&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The rulesets
check_mail and check_relay will not be called</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
when a client connects or issues a MAIL command, respectively.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Instead, those rulesets will be called by the check_rcpt</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ruleset; they will be skipped under certain circumstances.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
See &quot;Delay all checks&quot; in the anti-spam configuration
control</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
section.&nbsp; Note: this feature is incompatible to the versions</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
in 8.10 and 8.11.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>FEATURE('no_default_msa','dnl')dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>no_default_msa&nbsp;&nbsp;&nbsp; Don't generate the default MSA
daemon, i.e.,</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
DAEMON_OPTIONS('Port=587,Name=MSA,M=E')</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
To define a MSA daemon with other parameters, use this</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
FEATURE and introduce new settings via DAEMON_OPTIONS().</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>FEATURE('smrsh','/usr/sbin/smrsh')dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>smrsh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Use the SendMail
Restricted SHell (smrsh) provided</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
with the distribution instead of /bin/sh for mailing</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
to programs.&nbsp; This improves the ability of the local</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
system administrator to control what gets run via</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
e-mail.&nbsp; If an argument is provided it is used as the</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pathname to smrsh; otherwise, the path defined by</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
confEBINDIR is used for the smrsh binary -- by default,</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/usr/libexec/smrsh is assumed.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>FEATURE('mailertable','hash
-o /etc/mail/mailertable.db')dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>mailertable Include a &quot;mailer table&quot; which can be used
to override</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
routing for particular domains (which are not in class {w},</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i.e.&nbsp; local host names).&nbsp; The argument of the FEATURE may
be</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
the key definition.&nbsp; If none is specified, the definition</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
used is:</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
hash /etc/mail/mailertable</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Keys in this database are fully qualified domain names</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
or partial domains preceded by a dot -- for example,</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;vangogh.CS.Berkeley.EDU&quot; or &quot;.CS.Berkeley.EDU&quot;.&nbsp;
As a</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
special case of the latter, &quot;.&quot; matches any domain not</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
covered by other keys.&nbsp; Values must be of the form:</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mailer:domain</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
where &quot;mailer&quot; is the internal mailer name, and &quot;domain&quot;</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
is where to send the message.&nbsp; These maps are not</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
reflected into the message header.&nbsp; As a special case,</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
the forms:</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; local:user</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
will forward to the indicated user using the local mailer,</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
local:</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
will forward to the original user in the e-mail address</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
using the local mailer, and</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
error:code message</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
error:D.S.N:code message</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
will give an error message with the indicated SMTP reply</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
code and message, where D.S.N is an RFC 1893 compliant</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
error code.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>FEATURE('virtusertable','hash
-o /etc/mail/virtusertable.db')dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>virtusertable&nbsp;&nbsp;&nbsp;&nbsp; A domain-specific form of
aliasing, allowing multiple</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
virtual domains to be hosted on one machine.&nbsp; For example,</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if the virtuser table contained:</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
info@foo.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foo-info</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
info@bar.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bar-info</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
joe@bar.com error:nouser 550 No such user here</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jax@bar.com error:5.7.0:550 Address invalid</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@baz.org&nbsp;&nbsp;&nbsp; jane@example.net</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
then mail addressed to info@foo.com will be sent to the</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
address foo-info, mail addressed to info@bar.com will be</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
delivered to bar-info, and mail addressed to anyone at baz.org</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
will be sent to jane@example.net, mail to joe@bar.com will</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
be rejected with the specified error message, and mail to</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jax@bar.com will also have a RFC 1893 compliant error code</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
5.7.0.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
The username from the original address is passed</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
as %1 allowing:</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@foo.org&nbsp;&nbsp;&nbsp; %1@example.com</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
meaning someone@foo.org will be sent to someone@example.com.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Additionally, if the local part consists of &quot;user+detail&quot;</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
then &quot;detail&quot; is passed as %2 and &quot;+detail&quot; is
passed as %3</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
when a match against user+* is attempted, so entries like</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
old+*@foo.org&nbsp;&nbsp;&nbsp;&nbsp; new+%2@example.com</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
gen+*@foo.org&nbsp;&nbsp;&nbsp;&nbsp; %2@example.com</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+*@foo.org&nbsp; %1%3@example.com</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
X++@foo.org Z%3@example.com</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@bar.org&nbsp;&nbsp;&nbsp; %1%3</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
and other forms are possible.&nbsp; Note: to preserve &quot;+detail&quot;</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for a default case (@domain) %1%3 must be used as RHS.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
There are two wildcards after &quot;+&quot;: &quot;+&quot; matches
only a non-empty</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
detail, &quot;*&quot; matches also empty details, e.g., user+@foo.org</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
matches +*@foo.org but not ++@foo.org.&nbsp; This can be used</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
to ensure that the parameters %2 and %3 are not empty.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
All the host names on the left hand side (foo.com, bar.com,</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
and baz.org) must be in class {w} or class {VirtHost}.&nbsp; The</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
latter can be defined by the macros VIRTUSER_DOMAIN or</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
VIRTUSER_DOMAIN_FILE (analogously to MASQUERADE_DOMAIN and</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
MASQUERADE_DOMAIN_FILE, see below).&nbsp; If VIRTUSER_DOMAIN or</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
VIRTUSER_DOMAIN_FILE is used, then the entries of class</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
{VirtHost} are added to class {R}, i.e., relaying is allowed</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
to (and from) those domains.&nbsp; The default map definition is:</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
hash /etc/mail/virtusertable</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
A new definition can be specified as the second argument of</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
the FEATURE macro, such as</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
FEATURE('virtusertable', 'dbm /etc/mail/virtusers')</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>FEATURE(redirect)dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>redirect&nbsp;&nbsp;&nbsp; Reject all mail addressed to
&quot;address.REDIRECT&quot; with</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
a ''551 User has moved; please try &lt;address&gt;'' message.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
If this is set, you can alias people who have left</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
to their new address with &quot;.REDIRECT&quot; appended.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>FEATURE(always_add_domain)dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>always_add_domain</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Include the local host domain even on locally delivered</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mail.&nbsp; Normally it is not added on unqualified names.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
However, if you use a shared message store but do not use</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
the same user name space everywhere, you may need the host</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
name on local names.&nbsp; An optional argument specifies</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
another domain to be added than the local.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>FEATURE(use_cw_file)dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FEATURE('use_cw_file')tells
sendmail that you want to have it read </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>an
/etc/mail/local-host-names file to get values for class {w}.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>FEATURE(use_ct_file)dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>use_ct_file Read the file /etc/mail/trusted-users file to get the</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
names of users that will be ''trusted'', that is, able to</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
set their envelope from address using -f without generating</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
a warning message.&nbsp; The actual filename can be overridden</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
by redefining confCT_FILE.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>FEATURE(local_procmail,'','procmail
-t -Y -a $h -d $u')dnl</B></FONT></FONT></P>
<P>dnl The '-t' option will retry delivery if e.g. the user runs over
his quota.</P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>local_procmail&nbsp;&nbsp;&nbsp; Use procmail or another delivery
agent as the local mailer.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
The argument to this feature is the pathname of the</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
delivery agent, which defaults to PROCMAIL_MAILER_PATH.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Note that this does NOT use PROCMAIL_MAILER_FLAGS or</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
PROCMAIL_MAILER_ARGS for the local mailer; tweak</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
LOCAL_MAILER_FLAGS and LOCAL_MAILER_ARGS instead, or</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
specify the appropriate parameters.&nbsp; When procmail is used,</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
the local mailer can make use of the</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;user+indicator@local.host&quot; syntax; normally the +indicator</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
is just tossed, but by default it is passed as the -a</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
argument to procmail.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
This feature can take up to three arguments:</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1. Path to the mailer program</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp; [default: /usr/local/bin/procmail]</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2. Argument vector including name of the program</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp; [default: procmail -Y -a $h -d $u]</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
3. Flags for the mailer [default: SPfhn9]</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Empty arguments cause the defaults to be taken.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
For example, this allows it to use the maildrop</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
(http://www.flounder.net/~mrsam/maildrop/) mailer instead</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
by specifying:</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
FEATURE('local_procmail', '/usr/local/bin/maildrop',</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;'maildrop -d $u')</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
or scanmails using:</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
FEATURE('local_procmail', '/usr/local/bin/scanmails')</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
WARNING: This feature sets LOCAL_MAILER_FLAGS unconditionally,</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i.e.,&nbsp; without respecting any definitions in an OSTYPE setting.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>FEATURE('access_db','hash
-T&lt;TMPF&gt; -o /etc/mail/access.db')dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>access_db&nbsp;&nbsp; Turns on the access database feature.&nbsp;
The access db gives</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
you the ability to allow or refuse to accept mail from</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
specified domains for administrative reasons.&nbsp; Moreover,</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
it can control the behavior of sendmail in various situations.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
By default, the access database specification is:</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
hash -T&lt;TMPF&gt; /etc/mail/access</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
See the anti-spam configuration control section for further</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
important information about this feature.&nbsp; Notice:</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;-T&lt;TMPF&gt;&quot; is meant literal, do not replace it by
anything.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>FEATURE('blacklist_recipients')dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>blacklist_recipients</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Turns on the ability to block incoming mail for certain</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
recipient usernames, hostnames, or addresses.&nbsp; For</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
example, you can block incoming mail to user nobody,</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
host foo.mydomain.com, or guest@bar.mydomain.com.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
These specifications are put in the access db as</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
described in the anti-spam configuration control section</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
later in this document.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>EXPOSED_USER('root')dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>EXPOSED_USER('usernames')</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>This
adds users to class {E}; you could also use</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P>DAEMON_OPTIONS('Port=smtp,Addr=127.0.0.1, Name=MTA')</P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>dnl
This changes sendmail to only listen on the loopback device 127.0.0.1</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>dnl
and not on any other network devices. Comment this out if you want</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>dnl
to accept email over the network.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>dnl
DAEMON_OPTIONS('port=smtp,Addr=::1, Name=MTA-v6, Family=inet6')</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>dnl
NOTE: binding both IPv4 and IPv6 daemon to the same port requires</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>dnl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
a kernel patch</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<H1>FEATURE('accept_unresolvable_domains')dnl</H1>
<P STYLE="font-weight: medium">dnl We strongly recommend to comment
this one out if you want to protect</P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>dnl
yourself from spam. However, the laptop and users on computers that
do</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>dnl
not have 24x7 DNS do need this.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>accept_unresolvable_domains</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Normally, MAIL FROM: commands in the SMTP session will be</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
refused if the host part of the argument to MAIL FROM:</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cannot be located in the host name service (e.g., an A or</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
MX record in DNS).&nbsp; If you are inside a firewall that has</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
only a limited view of the Internet host name space, this</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
could cause problems.&nbsp; In this case you probably want to</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
use this feature to accept all domains on input, even if</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
they are unresolvable.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>dnl
FEATURE('relay_based_on_MX')dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=2><FONT FACE="Courier New"><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</B>relay_based_on_MX</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Turns on the ability to allow relaying based on the MX</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
records of the host portion of an incoming recipient; that</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
is, if an MX record for host foo.com points to your site,</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
you will accept and relay mail addressed to foo.com.&nbsp; See</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
description below for more information before using this</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
feature.&nbsp; Also, see the KNOWNBUGS entry regarding bestmx</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
map lookups.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
FEATURE('relay_based_on_MX') does not necessarily allow</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
routing of these messages which you expect to be allowed,</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if route address syntax (or %-hack syntax) is used.&nbsp; If</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
this is a problem, add entries to the access-table or use</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
FEATURE('loose_relay_check').</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>MAILER(smtp)dnl&nbsp;&nbsp;
</B></FONT></FONT>
</P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>MAILER(procmail)dnl</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>These
describe the mailers used at the default CS site.&nbsp; The local</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>mailer
is always included automatically.&nbsp; Beware: MAILER declarations</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>should
always be at the end of the configuration file.&nbsp; The general</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>rules
are that the order should be:</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>local&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
The local and prog mailers.&nbsp; You will almost always</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
need these; the only exception is if you relay ALL</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
your mail to another site.&nbsp; This mailer is included</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
automatically.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>smtp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
The Simple Mail Transport Protocol mailer.&nbsp; This does</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
not hide hosts behind a gateway or another other</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
such hack; it assumes a world where everyone is</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
running the name server.&nbsp; This file actually defines</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
five mailers: &quot;smtp&quot; for regular (old-style) SMTP to</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
other servers, &quot;esmtp&quot; for extended SMTP to other</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
servers, &quot;smtp8&quot; to do SMTP to other servers without</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
converting 8-bit data to MIME (essentially, this is</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
your statement that you know the other end is 8-bit</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
clean even if it doesn't say so), &quot;dsmtp&quot; to do on</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
demand delivery, and &quot;relay&quot; for transmission to the</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
RELAY_HOST, LUSER_RELAY, or MAIL_HUB.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>pop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Post Office Protocol.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>procmail&nbsp;&nbsp;&nbsp;
An interface to procmail (does not come with sendmail).</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
This is designed to be used in mailertables.&nbsp; For example,</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
a common question is &quot;how do I forward all mail for a given</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
domain to a single person?&quot;.&nbsp; If you have this mailer</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
defined, you could set up a mailertable reading:</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
host.com&nbsp;&nbsp;&nbsp; procmail:/etc/procmailrcs/host.com</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
with the file /etc/procmailrcs/host.com reading:</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
:0&nbsp;&nbsp;&nbsp; # forward mail for host.com</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! -oi -f $1 person@other.host</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
This would arrange for (anything)@host.com to be sent</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
to person@other.host.&nbsp; Within the procmail script, $1 is</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
the name of the sender and $2 is the name of the recipient.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
If you use this with FEATURE('local_procmail'), the FEATURE</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
should be listed first.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Of course there are other ways to solve this particular</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
problem, e.g., a catch-all entry in a virtusertable.</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2>&nbsp;</FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>Cwlocalhost.localdomain</B></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier New"><FONT SIZE=2><B>&nbsp;</B></FONT></FONT></P>
</table>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><base href="http://www.linuxgazette.com/" />
<title>
Take Command: ln - Linux Gazette </title>
</head>
<body>
<!-- node: "Take Command: ln" -->
<table cellpadding="0" cellspacing="0" style="border 0px; width: 100%;">
<tr><td colspan="2"><img src="themes/lg/images/drop.gif" alt="" title="" /> &nbsp; <b>Take Command: ln</b></td></tr>
<tr style="vertical-align: bottom;"><td colspan="2" style="background-color: #000000; width: 100%;"><img src="themes/lg/images/pixel.gif" width="1" height="1" alt="" title="" /></td></tr>
<tr><td><div style="color: #7c7c7c;"><small>Submitted by <a href="http://www.linuxgazette.com/user/view/1116" title="View user profile.">staff</a> on Saturday, November 29, 2003 - 05:55</small></div></td><td style="text-align: right; vertical-align: top;"></td></tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td colspan="2"><p>The ln command creates pseudonyms for files which allows them to be
accessed by different names. These pseudonyms are called links.
There are two different forms of the command and two different kinds of
links that can be created. First, let me explain the two forms.
<pre>
<b>ln</b> [<i>options</i>] <i>exiting_path</i> [<i>new_path</i>]
<b>ln</b> [<i>options</i>] <i>exiting_paths</i> <i>directory</i>
</pre>
<p>
In the first form, a new name is created called
<i>new_path</i> which is a psuedonym for
<i>existing_path</i>. The reason this is called a path is
that it can be a full pathname to a file. That is, it does not have to
specify a file in the current directory.
<p>
In the second form, the last argument is taken to be a directory name
and all the other arguments are paths to existing files. A link for
each existing file is created in the specified directory with the same
filename as the existing files.
<p>
Time for a few examples:
<br>
Create a link named my_file in the current directory to the file
/home/bill/his_file:<br>
<pre> ln /home/bill/his_file my_file </pre>
<p>
As above but the link is created in /home/joe/my_file:<br>
<pre> ln /home/bill/his_file /home/joe/my_file </pre>
<p>
As above but the link is named his_file and created in the current
directory:<br>
<pre> ln /home/bill/his_file </pre>
<p>
Here is an example of the second form where links to dog, cat and cow
from the current directory are created in /home/joe:<br>
<pre> ln dog cat cow /home/joe </pre>
<p>
Everything so far has created what is called a <i>hard link</i>. All
this means is that the new pseudonym has exactly the same properties as
the original name. In fact, the system makes on distinction between
them. For example, you could rename the file pig to chicken with the
following command sequence:
<pre>
ln pig chicken
rm pig
</pre>
<p>
The first line creates the pseudonym chicken for pig and the second
deletes pig. The filesystem is smart enough to know that as long as at
least one name points to the file, the file cannot be deleted.
<p>
All that said, there is a second kind of link called a symbolic link
which has quite different properties. That is, rather than pointing to
the file itself, it points to the file name (directory entry). This is
the only kind of link that can be used between filesystems. To create a
symbolic link, all works as above except you need to include the -s
option.
For example, to make a symbolic link called chicken that points to pig,
you would say:<br>
<pre> ln -s pig chicken</pre>
<p>
The only way you will see that chicken is a symbolic link is by using
the ls -l command (<code>ls -l chicken</code>). The output of this
command will look much like this:<br>
<pre> lrwxrwxrwx 1 joe users 3 2003-11-18 17:26 chicken -> pig</pre>
<br>
The first character (l) indicates that this is a link and the <code>chicken
-> pig</code> part indicates that chicken is a pointer to pig.
<p>
Now, if you were to delete the file pig (<code>rm pig</code>) the link
named chicken would still exist but any attempt to reference it (for
example, cat chicken) would give you a file not found error message.
<p>
Like most Linux commands, there are lots more options and lots more
choices. If you enter <code>ln --help</code> you will see the
complete list of options.
<p>
The first line creates the pseudonym chicken for pig and the second
deletes pig. The filesystem is smart enough to know that as long as at
least one name points to the file, the file cannot be deleted.
<p>
All that said, there is a second kind of link called a symbolic link
which has quite different properties. That is, rather than pointing to
the file itself, it points to the file name (directory entry). This is
the only kind of link that can be used between filesystems. To create a
symbolic link, all works as above except you need to include the -s
option.
For example, to make a symbolic link called chicken that points to pig,
you would say:<br>
<pre> ln -s pig chicken</pre>
<p>
The only way you will see that chicken is a symbolic link is by using
the ls -l command (<code>ls -l chicken</code>). The output of this
command will look much like this:<br>
<pre> lrwxrwxrwx 1 joe users 3 2003-11-18 17:26 chicken -> pig</pre>
<br>
The first character (l) indicates that this is a link and the <code>chicken
-> pig</code> part indicates that chicken is a pointer to pig.
<p>
Now, if you were to delete the file pig (<code>rm pig</code>) the link
named chicken would still exist but any attempt to reference it (for
example, cat chicken) would give you a file not found error message.
<p>
Like most Linux commands, there are lots more options and lots more
choices. If you enter <code>ln --help</code> you will see the
complete list of options.</p></td></tr>
</table>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><base href="http://www.linuxgazette.com/" />
<title>
NewsBytes </title>
</head>
<body>
</table>
<!-- node: "High Performance Computing Seminar, 10th December 2003" -->
<table cellpadding="0" cellspacing="0" style="border 0px; width: 100%;">
<tr><td colspan="2"><img src="themes/lg/images/drop.gif" alt="" title="" /> &nbsp; <b>High Performance Computing Seminar, 10th December 2003</b></td></tr>
<tr style="vertical-align: bottom;"><td colspan="2" style="background-color: #000000; width: 100%;"><img src="themes/lg/images/pixel.gif" width="1" height="1" alt="" title="" /></td></tr>
<tr><td><div style="color: #7c7c7c;"><small>Submitted by <a href="http://www.linuxgazette.com/user/view/773" title="View user profile.">Andrew Boddington</a> on Tuesday, November 11, 2003 - 13:56</small></div></td><td style="text-align: right; vertical-align: top;"></td></tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td colspan="2"><p>This event will share information on the different platforms and approaches to High Performance Computing (HPC) in Research and Higher Education, specifically considering the business and technical choices of Intel processors as the way ahead, contrast UNIX and Linux as the operating system, what is needed to build a Linux HPC systems (covering LC, XC, Lustre), and look at the configuration and application decisions made by existing users of High Performance Computing. With speakers from HP, Intel, ERBI, Accelrys and Cambridge Online.<br />
<br />
Wednesday 10th December 2003, at Hinxton, Cambridge, UK.<br />
<br />
You can ask for more information or register free of charge by sending your name and details to <br />
registration@cosl.co.uk <br />
or telephone Claire Armstrong 01223 422600.<br />
<br />
All pre-registering attendees will go in to a draw for a HP camera.</p></td></tr>
</table>
<br /><br />
<!-- node: "IBM/SuSE Supercomputer to Japan" -->
<table cellpadding="0" cellspacing="0" style="border 0px; width: 100%;">
<tr><td colspan="2"><img src="themes/lg/images/drop.gif" alt="" title="" /> &nbsp; <b>IBM/SuSE Supercomputer to Japan</b></td></tr>
<tr style="vertical-align: bottom;"><td colspan="2" style="background-color: #000000; width: 100%;"><img src="themes/lg/images/pixel.gif" width="1" height="1" alt="" title="" /></td></tr>
<tr><td><div style="color: #7c7c7c;"><small>Submitted by <a href="http://www.linuxgazette.com/user/view/523" title="View user profile.">Phil Hughes</a> on Wednesday, November 19, 2003 - 13:55</small></div></td><td style="text-align: right; vertical-align: top;"></td></tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td colspan="2"><p>Japan's National Institute of Advanced Industrial Science and Technology has ordered an IBM eServer Linux supercomputer. It is capable of 11 trillion operations per second and will be running SuSE Linux Enterprise Server 8. It is expected to end up as number three on the top 500 supercomputers list, moving the Lawrence Livermore Labs Linux cluster down to number four.
<p>
The computer will include 1,058 eServer 325 systems, each with dual AMD Opteron processors.</p></td></tr>
</table>
</body>
</html>
</BODY></HTML>