commit 77aa47524fbe07b84c0058104f7065a30d7cb77f
Author: Stephen Wadeley <swadeley(a)redhat.com>
Date: Thu Oct 23 22:31:45 2014 +0200
Updates after technical review
in en-US/Mail_Servers.xml
thank you to all package owners
en-US/Mail_Servers.xml | 260 +++++++++++++++++++++++++-----------------------
1 files changed, 135 insertions(+), 125 deletions(-)
---
diff --git a/en-US/Mail_Servers.xml b/en-US/Mail_Servers.xml
index 9fc855e..2bfc83b 100644
--- a/en-US/Mail_Servers.xml
+++ b/en-US/Mail_Servers.xml
@@ -3,16 +3,9 @@
]>
<chapter id="ch-Mail_Servers">
<title>Mail Servers</title>
- <indexterm
- significance="normal">
- <primary>email</primary>
- <secondary>history of</secondary>
- </indexterm>
- <para>
- <firstterm>Email</firstterm> was born in the 1960s. The mailbox was a
file in a user's home directory that was readable only by that user. Primitive mail
applications appended new text messages to the bottom of the file, making the user wade
through the constantly growing file to find any particular message. This system was only
capable of sending messages to users on the same system.</para>
- <para>The first network transfer of an electronic mail message file took place in
1971 when a computer engineer named Ray Tomlinson sent a test message between two machines
via ARPANET—the precursor to the Internet. Communication via email soon became very
popular, comprising 75 percent of ARPANET's traffic in less than two
years.</para>
- <para>Today, email systems based on standardized network protocols have evolved
into some of the most widely used services on the Internet. &MAJOROS; offers many
advanced applications to serve and access email.</para>
- <para>This chapter reviews modern email protocols in use today, and some of the
programs designed to send and receive email.</para>
+
+
+ <para>&MAJOROS; offers many advanced applications to serve and access email.
This chapter describes modern email protocols in use today, and some of the programs
designed to send and receive email.</para>
<section
id="s1-email-protocols">
<title>Email Protocols</title>
@@ -61,10 +54,10 @@
</para>
<note>
<title>Installing the dovecot package</title>
- <para>In order to use <application>Dovecot</application>, first
ensure the <command>dovecot</command> package is installed on your system by
running, as <systemitem class="username">root</systemitem>:
+ <para>In order to use <application>Dovecot</application>, first
ensure the <package>dovecot</package> package is installed on your system by
running, as <systemitem class="username">root</systemitem>:
</para>
- <screen><command>yum install dovecot</command></screen>
- <para>For more information on installing packages with Yum, refer to
<xref linkend="sec-Installing"/>.</para>
+ <screen>~]# <command>yum install
dovecot</command></screen>
+ <para>For more information on installing packages with Yum, see <xref
linkend="sec-Installing"/>.</para>
</note>
<para>
When using a <systemitem class="protocol">POP</systemitem>
server, email messages are downloaded by email client applications. By default, most
<systemitem class="protocol">POP</systemitem> email clients are
automatically configured to delete the message on the email server after it has been
successfully transferred, however this setting usually can be changed.</para>
@@ -75,7 +68,7 @@
<itemizedlist>
<listitem>
<para>
- <emphasis>APOP</emphasis> — <systemitem
class="protocol">POP3</systemitem> with <systemitem
class="service">MDS</systemitem> (Monash Directory Service)
authentication. An encoded hash of the user's password is sent from the email client
to the server rather then sending an unencrypted password.</para>
+ <emphasis>APOP</emphasis> — <systemitem
class="protocol">POP3</systemitem> with <systemitem
class="service">MD5</systemitem> authentication. An encoded hash of the
user's password is sent from the email client to the server rather than sending an
unencrypted password.</para>
</listitem>
<listitem>
<para>
@@ -86,7 +79,7 @@
<emphasis>RPOP</emphasis> — <systemitem
class="protocol">POP3</systemitem> with <systemitem
class="server">RPOP</systemitem> authentication. This uses a per-user
ID, similar to a password, to authenticate POP requests. However, this ID is not
encrypted, so <systemitem class="protocol">RPOP</systemitem> is no
more secure than standard <systemitem
class="protocol">POP</systemitem>.</para>
</listitem>
</itemizedlist>
- <para>For added security, it is possible to use <firstterm>Secure
Socket Layer</firstterm> (<firstterm>SSL</firstterm>) encryption for
client authentication and data transfer sessions. This can be enabled by using the
<command>pop3s</command> service, or by using the
<command>/usr/sbin/stunnel</command> application. For more information on
securing email communication, refer to <xref
linkend="s2-email-security"/>.</para>
+ <para>For added security, it is possible to use <firstterm>Secure
Socket Layer</firstterm> (<firstterm>SSL</firstterm>) encryption for
client authentication and data transfer sessions. This can be enabled by using the
<command>pop3s</command> service, or by using the
<command>stunnel</command> application. For more information on securing email
communication, see <xref linkend="s2-email-security"/>.</para>
</section>
<section
id="s3-email-protocols-imap">
@@ -102,7 +95,7 @@
<para><systemitem class="protocol">IMAP</systemitem>
is particularly useful for users who access their email using multiple machines. The
protocol is also convenient for users connecting to the mail server via a slow connection,
because only the email header information is downloaded for messages until opened, saving
bandwidth. The user also has the ability to delete messages without viewing or downloading
them.</para>
<para>For convenience, <systemitem
class="protocol">IMAP</systemitem> client applications are capable of
caching copies of messages locally, so the user can browse previously read messages when
not directly connected to the <systemitem
class="protocol">IMAP</systemitem> server.</para>
<para><systemitem class="protocol">IMAP</systemitem>,
like <systemitem class="protocol">POP</systemitem>, is fully
compatible with important Internet messaging standards, such as MIME, which allow for
email attachments.</para>
- <para>For added security, it is possible to use <systemitem
class="protocol">SSL</systemitem> encryption for client authentication
and data transfer sessions. This can be enabled by using the
<command>imaps</command> service, or by using the
<command>/usr/sbin/stunnel</command> program. For more information on securing
email communication, refer to <xref
linkend="s2-email-security"/>.</para>
+ <para>For added security, it is possible to use <systemitem
class="protocol">SSL</systemitem> encryption for client authentication
and data transfer sessions. This can be enabled by using the
<command>imaps</command> service, or by using the
<command>stunnel</command> program. For more information on securing email
communication, see <xref linkend="s2-email-security"/>.</para>
<para>Other free, as well as commercial, IMAP clients and servers are
available, many of which extend the IMAP protocol and provide additional
functionality.</para>
</section>
<section
@@ -119,19 +112,20 @@
continuation="restarts"
inheritnum="ignore">
<listitem>
- <para>Edit the
<filename>/etc/dovecot/dovecot.conf</filename> configuration file to make sure
the <literal>protocols</literal> variable is uncommented (remove the hash sign
(<command>#</command>) at the beginning of the line) and contains the
<literal>pop3</literal> argument. For example:</para>
+ <para>Edit the
<filename>/etc/dovecot/dovecot.conf</filename> configuration file to make sure
the <literal>protocols</literal> variable is uncommented (remove the hash sign
(<literal>#</literal>) at the beginning of the line) and contains the
<literal>pop3</literal> argument. For example:</para>
<programlisting>protocols = imap imaps pop3
pop3s</programlisting>
<para>
- When the <literal>protocols</literal> variable is left
commented out, <command>dovecot</command> will use the default values
specified for this variable.
+ When the <literal>protocols</literal> variable is left
commented out, <command>dovecot</command> will use the default values as
described above.
</para>
</listitem>
<listitem>
- <para>Make that change operational for the current session by running
the following command as <systemitem
class="username">root</systemitem>:</para>
- <screen><command>systemctl restart
dovecot.service</command></screen>
+ <para>Make the change operational for the current session by running
the following command as <systemitem
class="username">root</systemitem>:</para>
+ <screen>~]# <command>systemctl restart
dovecot</command></screen>
</listitem>
<listitem>
- <para>Make that change operational after the next reboot by running the
command:</para>
- <screen><command>systemctl enable
dovecot.service</command></screen>
+ <para>Make the change operational after the next reboot by running the
command:</para>
+ <screen>~]# <command>systemctl enable
dovecot</command>
+ln -s '/usr/lib/systemd/system/dovecot'
'/etc/systemd/system/multi-user.target.wants/dovecot'</screen>
<note>
<title>The dovecot service starts the POP3 server</title>
<para>
@@ -150,8 +144,8 @@
<para>Rename, move or delete the files
<filename>/etc/pki/dovecot/certs/dovecot.pem</filename> and
<filename>/etc/pki/dovecot/private/dovecot.pem</filename>.</para>
</listitem>
<listitem>
- <para>Execute the
<filename>/usr/libexec/dovecot/mkcert.sh</filename> script which creates the
<command>dovecot</command> self signed certificates. These certificates are
copied in the <filename>/etc/pki/dovecot/certs</filename> and
<filename>/etc/pki/dovecot/private</filename> directories. To implement the
changes, restart <command>dovecot</command> by typing the following at a shell
prompt as <systemitem
class="username">root</systemitem>:</para>
- <screen><command>systemctl restart
dovecot.service</command></screen>
+ <para>Execute the
<filename>/usr/libexec/dovecot/mkcert.sh</filename> script which creates the
<command>dovecot</command> self signed certificates. These certificates are
copied in the <filename>/etc/pki/dovecot/certs</filename> and
<filename>/etc/pki/dovecot/private</filename> directories. To implement the
changes, restart <command>dovecot</command> by issuing the following command
as <systemitem class="username">root</systemitem>:</para>
+ <screen>~]# <command>systemctl restart
dovecot</command></screen>
</listitem>
</itemizedlist>
<para>
@@ -191,8 +185,8 @@
<para>A <firstterm>Mail Transport Agent</firstterm>
(<firstterm>MTA</firstterm>) transports email messages between hosts using
<systemitem class="protocol">SMTP</systemitem>. A message may
involve several MTAs as it moves to its intended destination.</para>
<para>While the delivery of messages between machines may seem rather
straightforward, the entire process of deciding if a particular MTA can or should accept a
message for delivery is quite complicated. In addition, due to problems from spam, use of
a particular MTA is usually restricted by the MTA's configuration or the access
configuration for the network on which the MTA resides.</para>
<para>Many modern email client programs can act as an MTA when sending email.
However, this action should not be confused with the role of a true MTA. The sole reason
email client programs are capable of sending email like an MTA is because the host running
the application does not have its own MTA. This is particularly true for email client
programs on non-UNIX-based operating systems. However, these client programs only send
outbound messages to an MTA they are authorized to use and do not directly deliver the
message to the intended recipient's email server.</para>
- <para>Since &MAJOROS; offers two
MTAs—<firstterm>Postfix</firstterm> and
<firstterm>Sendmail</firstterm>—email client programs are often not required
to act as an MTA. &MAJOROS; also includes a special purpose MTA called
<firstterm>Fetchmail</firstterm>.</para>
- <para>For more information on Postfix, Sendmail, and Fetchmail, refer to
<xref
+ <para>Since &MAJOROS; offers two MTAs,
<firstterm>Postfix</firstterm> and
<firstterm>Sendmail</firstterm>, email client programs are often not required
to act as an MTA. &MAJOROS; also includes a special purpose MTA called
<firstterm>Fetchmail</firstterm>.</para>
+ <para>For more information on Postfix, Sendmail, and Fetchmail, see <xref
linkend="s1-email-mta"/>.</para>
</section>
<section
@@ -236,19 +230,26 @@
<primary>MUA</primary>
<see>Mail User Agent</see>
</indexterm>
- <para>A <firstterm>Mail User Agent</firstterm>
(<firstterm>MUA</firstterm>) is synonymous with an email client application.
An MUA is a program that, at the very least, allows a user to read and compose email
messages. Many MUAs are capable of retrieving messages via the <systemitem
class="protocol">POP</systemitem> or <systemitem
class="protocol">IMAP</systemitem> protocols, setting up mailboxes to
store messages, and sending outbound messages to an MTA.</para>
- <para>MUAs may be graphical, such as
<application>Evolution</application>, or have simple text-based interfaces,
such as <application>pine</application>.</para>
+ <para>A <firstterm>Mail User Agent</firstterm>
(<firstterm>MUA</firstterm>) is synonymous with an email client application.
An MUA is a program that, at a minimum, allows a user to read and compose email messages.
Many MUAs are capable of retrieving messages via the <systemitem
class="protocol">POP</systemitem> or <systemitem
class="protocol">IMAP</systemitem> protocols, setting up mailboxes to
store messages, and sending outbound messages to an MTA.</para>
+ <para>MUAs may be graphical, such as
<application>Evolution</application>, or have simple text-based interfaces,
such as <application>Mutt</application>.</para>
</section>
</section>
<section
id="s1-email-mta">
<title>Mail Transport Agents</title>
- <para>&MAJOROS; offers two primary MTAs: Postfix and Sendmail. Postfix is
configured as the default MTA, although it is easy to switch the default MTA to Sendmail.
To switch the default MTA to Sendmail, as <systemitem
class="username">root</systemitem>, you can either uninstall Postfix or
use the following command to switch to Sendmail:</para>
- <screen><command>alternatives --config
mta</command></screen>
+ <para>&MAJOROS; offers two primary MTAs: Postfix and Sendmail. Postfix is
configured as the default MTA and Sendmail is considered deprecated. If required to switch
the default MTA to Sendmail, you can either uninstall Postfix or use the following command
as <systemitem class="username">root</systemitem> to switch to
Sendmail:</para>
+ <screen>~]# <command>alternatives --config
mta</command></screen>
+ <para>
+ You can also use the following command to enable the desired service:
+ </para>
+ <screen>~]# <command>systemctl enable
<replaceable>service</replaceable></command></screen>
<para>
- You can also use the following command to enable/disable the desired service:
+ Similarly, to disable the service, type the following at a shell prompt:
+ </para>
+ <screen>~]# <command>systemctl disable
<replaceable>service</replaceable></command></screen>
+ <para>
+ For more information on how to manage system services in &MAJOROSVER;, see
<xref linkend="ch-Services_and_Daemons" />.
</para>
- <screen><command>systemctl enable|disable
<replaceable>service</replaceable>.service</command></screen>
<section
id="s2-email-mta-postfix">
<title>Postfix</title>
@@ -303,12 +304,12 @@
</para>
<important>
<title>Configuring Postfix as a server for other clients</title>
- <para>The default <filename>/etc/postfix/main.cf</filename>
file does not allow Postfix to accept network connections from a host other than the local
computer. For instructions on configuring Postfix as a server for other clients, refer to
<xref
+ <para>The default <filename>/etc/postfix/main.cf</filename>
file does not allow Postfix to accept network connections from a host other than the local
computer. For instructions on configuring Postfix as a server for other clients, see
<xref
linkend="s3-email-mta-postfix-conf"/>.</para>
</important>
<para>
Restart the <systemitem
class="service">postfix</systemitem> service after changing any options
in the configuration files under the <filename>/etc/postfix</filename>
directory in order for those changes to take effect. To do so, run the following command
as <systemitem class="username">root</systemitem>:
- <screen><command>systemctl restart
postfix.service</command></screen>
+ <screen>~]# <command>systemctl restart
postfix</command></screen>
</para>
</section>
<section
@@ -320,13 +321,13 @@
<para>Edit the <filename>/etc/postfix/main.cf</filename>
file with a text editor, such as <command>vi</command>.</para>
</listitem>
<listitem>
- <para>Uncomment the <command>mydomain</command> line by
removing the hash sign (<command>#</command>), and replace
<replaceable>domain.tld</replaceable> with the domain the mail server is
servicing, such as <command>example.com</command>.</para>
+ <para>Uncomment the <command>mydomain</command> line by
removing the hash sign (<literal>#</literal>), and replace
<replaceable>domain.tld</replaceable> with the domain the mail server is
servicing, such as <command>example.com</command>.</para>
</listitem>
<listitem>
<para>Uncomment the <command>myorigin = $mydomain</command>
line.</para>
</listitem>
<listitem>
- <para>Uncomment the <command>myhostname</command> line, and
replace <replaceable>host.domain.tld</replaceable> with the hostname for the
machine.</para>
+ <para>Uncomment the <command>myhostname</command> line, and
replace <replaceable>host.domain.tld</replaceable> with the host name for the
machine.</para>
</listitem>
<listitem>
<para>Uncomment the <command>mydestination = $myhostname,
localhost.$mydomain</command> line.</para>
@@ -355,11 +356,11 @@
</para>
<section id="aliases-example">
<title>The /etc/aliases lookup example</title>
- <para>The following is a basic example for using <systemitem
class="protocol">LDAP</systemitem> to look up the
<filename>/etc/aliases</filename> file. Make sure your
<filename>/etc/postfix/main.cf</filename> contains the following:
+ <para>The following is a basic example for using <systemitem
class="protocol">LDAP</systemitem> to look up the
<filename>/etc/aliases</filename> file. Make sure your
<filename>/etc/postfix/main.cf</filename> file contains the following:
</para>
<programlisting>alias_maps = hash:/etc/aliases,
ldap:/etc/postfix/ldap-aliases.cf</programlisting>
<para>
- Create a <filename>/etc/postfix/ldap-aliases.cf</filename> file
if you do not have one created already and make sure it contains the following:
+ Create a <filename>/etc/postfix/ldap-aliases.cf</filename> file
if you do not have one already and make sure it contains the following:
</para>
<programlisting>server_host =
<replaceable>ldap.example.com</replaceable>
search_base = dc=<replaceable>example</replaceable>,
dc=<replaceable>com</replaceable></programlisting>
@@ -369,10 +370,10 @@ search_base = dc=<replaceable>example</replaceable>,
dc=<replaceable>com</replac
<note>
<title>The /etc/postfix/ldap-aliases.cf file</title>
<para>
- The <filename>/etc/postfix/ldap-aliases.cf</filename> file
can specify various parameters, including parameters that enable <systemitem
class="protocol">LDAP</systemitem> <systemitem
class="protocol">SSL</systemitem> and <systemitem
class="protocol">STARTTLS</systemitem>. For more information, refer to
the <command>ldap_table(5)</command> man page.
+ The <filename>/etc/postfix/ldap-aliases.cf</filename> file
can specify various parameters, including parameters that enable <systemitem
class="protocol">LDAP</systemitem> <systemitem
class="protocol">SSL</systemitem> and <systemitem
class="protocol">STARTTLS</systemitem>. For more information, see the
<filename>ldap_table(5)</filename> man page.
</para>
</note>
- <para>For more information on <systemitem
class="protocol">LDAP</systemitem>, refer to <xref
linkend="s1-OpenLDAP" />.
+ <para>For more information on <systemitem
class="protocol">LDAP</systemitem>, see <xref
linkend="s1-OpenLDAP" />.
</para>
</section>
</section>
@@ -389,7 +390,7 @@ search_base = dc=<replaceable>example</replaceable>,
dc=<replaceable>com</replac
significance="normal">
<primary>Sendmail</primary>
</indexterm>
- <para>Sendmail's core purpose, like other MTAs, is to safely transfer
email among hosts, usually using the <systemitem
class="protocol">SMTP</systemitem> protocol. However, Sendmail is
highly configurable, allowing control over almost every aspect of how email is handled,
including the protocol used. Many system administrators elect to use Sendmail as their MTA
due to its power and scalability.</para>
+ <para>Sendmail's core purpose, like other MTAs, is to safely transfer
email among hosts, usually using the <systemitem
class="protocol">SMTP</systemitem> protocol. Note that Sendmail is
considered deprecated and users are encouraged to use Postfix when possible. See <xref
linkend="s2-email-mta-postfix" /> for more information.</para>
<section
id="s3-email-mta-sendmail-purpose">
<title>Purpose and Limitations</title>
@@ -417,24 +418,22 @@ search_base = dc=<replaceable>example</replaceable>,
dc=<replaceable>com</replac
<secondary>default installation</secondary>
</indexterm>
<para>In order to use Sendmail, first ensure the
<package>sendmail</package> package is installed on your system by running, as
<systemitem class="username">root</systemitem>:</para>
- <screen><command>yum install
sendmail</command></screen>
+ <screen>~]# <command>yum install
sendmail</command></screen>
<para>
In order to configure Sendmail, ensure the
<package>sendmail-cf</package> package is installed on your system by running,
as <systemitem class="username">root</systemitem>:
</para>
- <screen><command>yum install
sendmail-cf</command></screen>
- <para>For more information on installing packages with Yum, refer to
<xref linkend="sec-Installing"/>.</para>
+ <screen>~]# <command>yum install
sendmail-cf</command></screen>
+ <para>For more information on installing packages with Yum, see <xref
linkend="sec-Installing"/>.</para>
<para>
Before using Sendmail, the default MTA has to be switched from Postfix. For
more information how to switch the default MTA refer to <xref
linkend="s1-email-mta"/>.
</para>
<para>The Sendmail executable is
<filename>/usr/sbin/sendmail</filename>.</para>
- <para>Sendmail's lengthy and detailed configuration file is
<filename>/etc/mail/sendmail.cf</filename>. Avoid editing the
<filename>sendmail.cf</filename> file directly. To make configuration changes
to Sendmail, edit the <filename>/etc/mail/sendmail.mc</filename> file, back up
the original <filename>/etc/mail/sendmail.cf</filename>, and use the following
alternatives to generate a new configuration file:</para>
+ <para>Sendmail's lengthy and detailed configuration file is
<filename>/etc/mail/sendmail.cf</filename>. Avoid editing the
<filename>sendmail.cf</filename> file directly. To make configuration changes
to Sendmail, edit the <filename>/etc/mail/sendmail.mc</filename> file, back up
the original <filename>/etc/mail/sendmail.cf</filename> file, and use the
following alternatives to generate a new configuration file:</para>
<itemizedlist>
<listitem>
- <para>Use the included makefile in
<filename>/etc/mail/</filename> (<command>~]# make all -C
/etc/mail/</command>) to create a new
<filename>/etc/mail/sendmail.cf</filename> configuration file. All other
generated files in <filename>/etc/mail</filename> (db files) will be
regenerated if needed. The old makemap commands are still usable. The make command will
automatically be used by <command>systemctl start|restart|reload
sendmail.service</command>.</para>
- </listitem>
- <listitem>
- <para>Alternatively you may use the <command>m4</command>
macro processor to create a new <filename>/etc/mail/sendmail.cf</filename>.
The <command>m4</command> macro processor is not installed by default. Before
using it to create <filename>/etc/mail/sendmail.cf</filename>, install the
<package>m4</package> package as <systemitem
class="username">root</systemitem>:</para>
- <screen><command>yum install m4</command></screen>
+ <para>Use the included makefile in
<filename>/etc/mail/</filename> to create a new
<filename>/etc/mail/sendmail.cf</filename> configuration file:</para>
+ <screen>~]# <command>make all -C
/etc/mail/</command></screen>
+ <para>All other generated files in
<filename>/etc/mail</filename> (db files) will be regenerated if needed. The
old makemap commands are still usable. The make command is automatically used whenever you
start or restart the <systemitem
class="service">sendmail</systemitem> service.</para>
</listitem>
</itemizedlist>
<para>More information on configuring Sendmail can be found in <xref
@@ -462,16 +461,27 @@ search_base = dc=<replaceable>example</replaceable>,
dc=<replaceable>com</replac
<filename>virtusertable</filename> — Specifies a
domain-specific form of aliasing, allowing multiple virtual domains to be hosted on one
machine.</para>
</listitem>
</itemizedlist>
- <para>Several of the configuration files in
<filename>/etc/mail/</filename>, such as
<filename>access</filename>, <filename>domaintable</filename>,
<filename>mailertable</filename> and
<filename>virtusertable</filename>, must actually store their information in
database files before Sendmail can use any configuration changes. To include any changes
made to these configurations in their database files, run the following command, as
<systemitem class="username">root</systemitem>:</para>
- <screen><command>makemap hash
/etc/mail/<replaceable>name</replaceable> <
/etc/mail/<replaceable>name</replaceable></command></screen>
- <para>where <replaceable>name</replaceable> represents the name
of the configuration file to be updated.
+ <para>Several of the configuration files in
<filename>/etc/mail/</filename>, such as
<filename>access</filename>, <filename>domaintable</filename>,
<filename>mailertable</filename> and
<filename>virtusertable</filename>, must actually store their information in
database files before Sendmail can use any configuration changes. To include any changes
made to these configurations in their database files, run the following commands, as
<systemitem class="username">root</systemitem>:
+ <screen>~]# <command>cd /etc/mail</command>
+~]# <command>make all</command></screen>
+This will update <filename>virtusertable.db</filename>,
<filename>access.db</filename>,
<filename>domaintable.db</filename>,
<filename>mailertable.db</filename>,
<filename>sendmail.cf</filename>, and
<filename>submit.cf</filename>.</para>
+<para>
+To update all the database files listed above and to update a custom database file, use a
command in the following format:
+<synopsis><command>make
<replaceable>name>.db</replaceable>
all</command></synopsis>
+where <replaceable>name</replaceable> represents the name of the custom
database file to be updated.</para>
+<para>
+To update a single database, use a command in the following format:
+<synopsis><command>make
<replaceable>name>.db</replaceable></command></synopsis>
+where <replaceable>name>.db</replaceable> represents the name of the
database file to be updated.</para>
+ <para>
You may also restart the <systemitem
class="service">sendmail</systemitem> service for the changes to take
effect by running:</para>
- <screen><command>systemctl restart
sendmail.service</command></screen>
- <para>For example, to have all emails addressed to the
<filename>example.com</filename> domain delivered to
<email>bob(a)other-example.com</email>, add the following line to the
<filename>virtusertable</filename> file:</para>
- <programlisting><command>(a)example.com
bob(a)other-example.com</command></programlisting>
+ <screen>~]# <command>systemctl restart
sendmail</command></screen>
+ <para>For example, to have all emails addressed to the
<filename>example.com</filename> domain delivered to
<literal>bob(a)other-example.com</literal>, add the following line to the
<filename>virtusertable</filename> file:</para>
+ <screen>
+<command>(a)example.com bob(a)other-example.com</command></screen>
<para>To finalize the change, the
<filename>virtusertable.db</filename> file must be updated:</para>
- <screen><command>makemap hash /etc/mail/virtusertable <
/etc/mail/virtusertable</command></screen>
- <para>Sendmail will create an updated
<filename>virtusertable.db</filename> file containing the new
configuration.</para>
+ <screen>~]# <command>make
<filename>virtusertable.db</filename> all</command></screen>
+ <para>Using the <option>all</option> option will result in the
<filename>virtusertable.db</filename> and
<filename>access.db</filename> being updated at the same time.</para>
</section>
<section
id="s3-email-mta-sendmail-changes">
@@ -489,10 +499,10 @@ search_base = dc=<replaceable>example</replaceable>,
dc=<replaceable>com</replac
<para>When altering the Sendmail configuration file, it is best not to edit
an existing file, but to generate an entirely new
<filename>/etc/mail/sendmail.cf</filename> file.</para>
<warning>
<title>Backup the sendmail.cf file before changing its
content</title>
- <para>Before changing the <filename>sendmail.cf</filename>
file, it is a good idea to create a backup copy.</para>
+ <para>Before replacing or making any changes to the
<filename>sendmail.cf</filename> file, create a backup copy.</para>
</warning>
<para>To add the desired functionality to Sendmail, edit the
<filename>/etc/mail/sendmail.mc</filename> file as <systemitem
class="username">root</systemitem>. Once you are finished, restart the
<systemitem class="service">sendmail</systemitem> service and, if
the <package>m4</package> package is installed, the
<command>m4</command> macro processor will automatically generate a new
<filename>sendmail.cf</filename> configuration file:</para>
- <screen><command>systemctl restart
sendmail.service</command></screen>
+ <screen>~]# <command>systemctl restart
sendmail</command></screen>
<!--mlichvar: also happens automatically
When finished, use the <command>m4</command> macro processor to
generate a new <filename>sendmail.cf</filename> by executing the following
command:</para>
<screen>
@@ -506,9 +516,9 @@ search_base = dc=<replaceable>example</replaceable>,
dc=<replaceable>com</replac
<important>
<title>Configuring Sendmail as a server for other clients</title>
<para>The default <filename>sendmail.cf</filename> file does
not allow Sendmail to accept network connections from any host other than the local
computer. To configure Sendmail as a server for other clients, edit the
<filename>/etc/mail/sendmail.mc</filename> file, and either change the address
specified in the <command>Addr=</command> option of the
<command>DAEMON_OPTIONS</command> directive from
<command>127.0.0.1</command> to the IP address of an active network device or
comment out the <command>DAEMON_OPTIONS</command> directive all together by
placing <command>dnl</command> at the beginning of the line. When finished,
regenerate <filename>/etc/mail/sendmail.cf</filename> by restarting the
service:</para>
- <screen><command>systemctl restart
sendmail.service</command></screen>
+ <screen>~]# <command>systemctl restart
sendmail</command></screen>
</important>
- <para>The default configuration which ships with &MAJOROS; works for
most <systemitem class="protocol">SMTP</systemitem>-only sites.
However, it does not work for <firstterm>UUCP</firstterm>
(<firstterm>UNIX-to-UNIX Copy Protocol</firstterm>) sites. If using UUCP mail
transfers, the <filename>/etc/mail/sendmail.mc</filename> file must be
reconfigured and a new <filename>/etc/mail/sendmail.cf</filename> file must be
generated.</para>
+ <para>The default configuration in &MAJOROS; works for most
<systemitem class="protocol">SMTP</systemitem>-only sites. However,
it does not work for <firstterm>UUCP</firstterm>
(<firstterm>UNIX-to-UNIX Copy Protocol</firstterm>) sites. If using UUCP mail
transfers, the <filename>/etc/mail/sendmail.mc</filename> file must be
reconfigured and a new <filename>/etc/mail/sendmail.cf</filename> file must be
generated.</para>
<para>Consult the
<filename>/usr/share/sendmail-cf/README</filename> file before editing any
files in the directories under the <filename>/usr/share/sendmail-cf</filename>
directory, as they can affect the future configuration of the
<filename>/etc/mail/sendmail.cf</filename> file.</para>
</section>
<section
@@ -524,17 +534,17 @@ search_base = dc=<replaceable>example</replaceable>,
dc=<replaceable>com</replac
<primary>Sendmail</primary>
<secondary>masquerading</secondary>
</indexterm>
- <para>One common Sendmail configuration is to have a single machine act as
a mail gateway for all machines on the network. For instance, a company may want to have a
machine called <computeroutput>mail.example.com</computeroutput> that handles
all of their email and assigns a consistent return address to all outgoing
mail.</para>
+ <para>One common Sendmail configuration is to have a single machine act as
a mail gateway for all machines on the network. For example, a company may want to have a
machine called <computeroutput>mail.example.com</computeroutput> that handles
all of their email and assigns a consistent return address to all outgoing
mail.</para>
<para>In this situation, the Sendmail server must masquerade the machine
names on the company network so that their return address is
<computeroutput>user(a)example.com</computeroutput> instead of
<computeroutput>user(a)host.example.com</computeroutput>.</para>
<para>To do this, add the following lines to
<filename>/etc/mail/sendmail.mc</filename>:</para>
<programlisting>FEATURE(always_add_domain)dnl
FEATURE(`masquerade_entire_domain')dnl
FEATURE(`masquerade_envelope')dnl
FEATURE(`allmasquerade')dnl
-MASQUERADE_AS(`bigcorp.com.')dnl
-MASQUERADE_DOMAIN(`bigcorp.com.')dnl
-MASQUERADE_AS(bigcorp.com)dnl</programlisting>
- <para>After generating a new <filename>sendmail.cf</filename>
using the <command>m4</command> macro processor, this configuration makes all
mail from inside the network appear as if it were sent from
<computeroutput>bigcorp.com</computeroutput>.</para>
+MASQUERADE_AS(`example.com.')dnl
+MASQUERADE_DOMAIN(`example.com.')dnl
+MASQUERADE_AS(example.com)dnl</programlisting>
+ <para>After generating a new <filename>sendmail.cf</filename>
file using the <command>m4</command> macro processor, this configuration makes
all mail from inside the network appear as if it were sent from <systemitem
class="domainname">example.com</systemitem>.</para>
</section>
<section
id="s3-email-sendmail-stopping-spam">
@@ -547,15 +557,15 @@ MASQUERADE_AS(bigcorp.com)dnl</programlisting>
<para>Email spam can be defined as unnecessary and unwanted email received
by a user who never requested the communication. It is a disruptive, costly, and
widespread abuse of Internet communication standards.</para>
<para>Sendmail makes it relatively easy to block new spamming techniques
being employed to send junk email. It even blocks many of the more usual spamming methods
by default. Main anti-spam features available in sendmail are <firstterm>header
checks</firstterm>, <firstterm>relaying denial</firstterm> (default from
version 8.9), <firstterm>access database and sender information
checks</firstterm>.
</para>
- <para>For example, forwarding of <systemitem
class="protocol">SMTP</systemitem> messages, also called relaying, has
been disabled by default since Sendmail version 8.9. Before this change occurred, Sendmail
directed the mail host (<filename>x.edu</filename>) to accept messages from
one party (<filename>y.com</filename>) and sent them to a different party
(<filename>z.net</filename>). Now, however, Sendmail must be configured to
permit any domain to relay mail through the server. To configure relay domains, edit the
<filename>/etc/mail/relay-domains</filename> file and restart
Sendmail:</para>
- <screen><command>systemctl restart
sendmail.service</command></screen>
- <para>However, many times users are bombarded with spam from other servers
throughout the Internet. In these instances, Sendmail's access control features
available through the <filename>/etc/mail/access</filename> file can be used
to prevent connections from unwanted hosts. The following example illustrates how this
file can be used to both block and specifically allow access to the Sendmail
server:</para>
- <
programlisting>badspammer.com ERROR:550 "Go away and do not spam
us"
tux.badspammer.com OK 10.0 RELAY</programlisting>
- <para>This example shows that any email sent from
<filename>badspammer.com</filename> is blocked with a 550 RFC-821 compliant
error code, with a message sent back to the spammer. Email sent from the
<filename>tux.badspammer.com</filename> sub-domain, is accepted. The last line
shows that any email sent from the 10.0.*.* network can be relayed through the mail
server.</para>
+ <para>For example, forwarding of <systemitem
class="protocol">SMTP</systemitem> messages, also called relaying, has
been disabled by default since Sendmail version 8.9. Before this change occurred, Sendmail
directed the mail host (<filename>x.edu</filename>) to accept messages from
one party (<filename>y.com</filename>) and sent them to a different party
(<filename>z.net</filename>). Now, however, Sendmail must be configured to
permit any domain to relay mail through the server. To configure relay domains, edit the
<filename>/etc/mail/relay-domains</filename> file and restart
Sendmail</para>
+ <screen>~]# <command>systemctl restart
sendmail</command></screen>
+ <para>However users can also be sent spam from from servers on the
Internet. In these instances, Sendmail's access control features available through the
<filename>/etc/mail/access</filename> file can be used to prevent connections
from unwanted hosts. The following example illustrates how this file can be used to both
block and specifically allow access to the Sendmail server:</para>
+<programlisting>badspammer.com ERROR:550 "Go away and do not spam us
anymore"
tux.badspammer.com OK 10.0 RELAY</programlisting>
+ <para>This example shows that any email sent from
<filename>badspammer.com</filename> is blocked with a 550 RFC-821 compliant
error code, with a message sent back. Email sent from the
<filename>tux.badspammer.com</filename> sub-domain, is accepted. The last line
shows that any email sent from the 10.0.*.* network can be relayed through the mail
server.</para>
<para>Because the <filename>/etc/mail/access.db</filename> file
is a database, use the <command>makemap</command> command to update any
changes. Do this using the following command as <systemitem
class="username">root</systemitem>:</para>
- <screen><command>makemap hash /etc/mail/access <
/etc/mail/access</command></screen>
+ <screen>~]# <command>makemap hash /etc/mail/access <
/etc/mail/access</command></screen>
<para>Message header analysis allows you to reject mail based on header
contents. <systemitem class="protocol">SMTP</systemitem> servers
store information about an email's journey in the message header. As the message
travels from one MTA to another, each puts in a <literal>Received</literal>
header above all the other <literal>Received</literal> headers. It is
important to note that this information may be altered by spammers.</para>
- <para>The above examples only represent a small part of what Sendmail can
do in terms of allowing or blocking access. See the
<filename>/usr/share/sendmail-cf/README</filename> for more information and
examples.</para>
+ <para>The above examples only represent a small part of what Sendmail can
do in terms of allowing or blocking access. See the
<filename>/usr/share/sendmail-cf/README</filename> file for more information
and examples.</para>
<para>Since Sendmail calls the Procmail MDA when delivering mail, it is
also possible to use a spam filtering program, such as SpamAssassin, to identify and file
spam for users. See <xref
linkend="s3-email-mda-spam"/> for more information about using
SpamAssassin.</para>
</section>
@@ -599,8 +609,8 @@ FEATURE('ldap_routing')dnl</programlisting>
<note>
<title>Installing the fetchmail package</title>
<para>In order to use <application>Fetchmail</application>,
first ensure the <package>fetchmail</package> package is installed on your
system by running, as <systemitem
class="username">root</systemitem>:</para>
- <screen><command>yum install
fetchmail</command></screen>
- <para>For more information on installing packages with Yum, refer to
<xref linkend="sec-Installing"/>.</para>
+ <screen>~]# <command>yum install
fetchmail</command></screen>
+ <para>For more information on installing packages with Yum, see <xref
linkend="sec-Installing"/>.</para>
</note>
<para>Fetchmail is configured for each user through the use of a
<filename>.fetchmailrc</filename> file in the user's home directory. If it
does not already exist, create the <filename>.fetchmailrc</filename> file in
your home directory</para>
<para>Using preferences in the <filename>.fetchmailrc</filename>
file, Fetchmail checks for email on a remote server and downloads it. It then delivers it
to port <constant>25</constant> on the local machine, using the local MTA to
place the email in the correct user's spool file. If Procmail is available, it is
launched to filter the email and place it in a mailbox so that it can be read by an
MUA.</para>
@@ -627,7 +637,7 @@ FEATURE('ldap_routing')dnl</programlisting>
</listitem>
<listitem>
<para>
- <emphasis>server options</emphasis> — Specifies necessary
information about the server being polled, such as the hostname, as well as preferences
for specific email servers, such as the port to check or number of seconds to wait before
timing out. These options affect every user using that server.</para>
+ <emphasis>server options</emphasis> — Specifies necessary
information about the server being polled, such as the host name, as well as preferences
for specific email servers, such as the port to check or number of seconds to wait before
timing out. These options affect every user using that server.</para>
</listitem>
<listitem>
<para>
@@ -635,8 +645,8 @@ FEATURE('ldap_routing')dnl</programlisting>
</listitem>
</itemizedlist>
<para>Global options appear at the top of the
<filename>.fetchmailrc</filename> file, followed by one or more server
options, each of which designate a different email server that Fetchmail should check.
User options follow server options for each user account checking that email server. Like
server options, multiple user options may be specified for use with a particular server as
well as to check multiple email accounts on the same server.</para>
- <para>Server options are called into service in the
<filename>.fetchmailrc</filename> file by the use of a special option verb,
<command>poll</command> or <command>skip</command>, that precedes
any of the server information. The <command>poll</command> action tells
Fetchmail to use this server option when it is run, which checks for email using the
specified user options. Any server options after a <command>skip</command>
action, however, are not checked unless this server's hostname is specified when
Fetchmail is invoked. The <command>skip</command> option is useful when
testing configurations in the <filename>.fetchmailrc</filename> file because
it only checks skipped servers when specifically invoked, and does not affect any
currently working configurations.</para>
- <para>The following is a sample example of a
<filename>.fetchmailrc</filename> file:</para>
+ <para>Server options are called into service in the
<filename>.fetchmailrc</filename> file by the use of a special option verb,
<command>poll</command> or <command>skip</command>, that precedes
any of the server information. The <command>poll</command> action tells
Fetchmail to use this server option when it is run, which checks for email using the
specified user options. Any server options after a <command>skip</command>
action, however, are not checked unless this server's host name is specified when
Fetchmail is invoked. The <command>skip</command> option is useful when
testing configurations in the <filename>.fetchmailrc</filename> file because
it only checks skipped servers when specifically invoked, and does not affect any
currently working configurations.</para>
+ <para>The following is an example of a
<filename>.fetchmailrc</filename> file:</para>
<programlisting>set postmaster "user1"
set bouncemail
@@ -728,7 +738,7 @@ poll
mail.domain2.com
<listitem>
<para>
<command>timeout <replaceable>seconds</replaceable>
- </command> — Replace <replaceable>seconds</replaceable>
with the number of seconds of server inactivity after which Fetchmail gives up on a
connection attempt. If this value is not set, a default of
<command>300</command> seconds is assumed.</para>
+ </command> — Replace <replaceable>seconds</replaceable>
with the number of seconds of server inactivity after which Fetchmail gives up on a
connection attempt. If this value is not set, a default of
<command>300</command> seconds is used.</para>
</listitem>
</itemizedlist>
</section>
@@ -916,7 +926,7 @@ poll
mail.domain2.com
<primary>MUA</primary>
</indexterm>
<para>A <firstterm>Mail Transport Agent</firstterm> (MTA) is
essential for sending email. A <firstterm>Mail User Agent</firstterm> (MUA)
such as <application>Evolution</application>,
<application>Thunderbird</application>, and
<application>Mutt</application>, is used to read and compose email. When a
user sends an email from an MUA, the message is handed off to the MTA, which sends the
message through a series of MTAs until it reaches its destination.</para>
- <para>Even if a user does not plan to send email from the system, some
automated tasks or system programs might use the <command>/bin/mail</command>
command to send email containing log messages to the <systemitem
class="username">root</systemitem> user of the local
system.</para>
+ <para>Even if a user does not plan to send email from the system, some
automated tasks or system programs might use the <command>mail</command>
command to send email containing log messages to the <systemitem
class="username">root</systemitem> user of the local
system.</para>
<indexterm
significance="normal">
<primary>sendmail</primary>
@@ -925,7 +935,7 @@ poll
mail.domain2.com
significance="normal">
<primary>postfix</primary>
</indexterm>
- <para>&MAJOROSVER; provides two MTAs: Postfix and Sendmail. If both are
installed, Postfix is the default MTA.</para>
+ <para>&MAJOROSVER; provides two MTAs: Postfix and Sendmail. If both are
installed, Postfix is the default MTA. Note that Sendmail is considered deprecated in
MAJOROS;.</para>
<!--silas: system-switch-mail is deprecated (use alternatives)-->
<!--<para>The <application>Mail Transport Agent
Switcher</application> allows for the selection of either
<command>sendmail</command>, or <command>postfix</command> as the
default MTA for the system.</para>
<para>You should install the <package>system-switch-mail</package>
package to use the text-based version of the <application>Mail Transport Agent
Switcher</application> program. If you want to use the graphical version, install
the <package>system-switch-mail-gnome</package> package.</para>
@@ -1010,9 +1020,11 @@ poll
mail.domain2.com
<listitem>
<para>
<command>INCLUDERC</command> — Specifies additional
<filename>rc</filename> files containing more recipes for messages to be
checked against. This breaks up the Procmail recipe lists into individual files that
fulfill different roles, such as blocking spam and managing email lists, that can then be
turned off or on by using comment characters in the user's
<filename>~/.procmailrc</filename> file.</para>
- <para>For example, lines in a user's
<filename>.procmailrc</filename> file may look like this:</para>
- <programlisting>MAILDIR=$HOME/Msgs INCLUDERC=$MAILDIR/lists.rc
INCLUDERC=$MAILDIR/spam.rc</programlisting>
- <para>To turn off Procmail filtering of email lists but leaving spam
control in place, comment out the first <command>INCLUDERC</command> line with
a hash sign (<command>#</command>).</para>
+ <para>For example, lines in a user's
<filename>~/.procmailrc</filename> file may look like this:</para>
+ <screen>MAILDIR=$HOME/Msgs
+INCLUDERC=$MAILDIR/lists.rc
+INCLUDERC=$MAILDIR/spam.rc</screen>
+ <para>To turn off Procmail filtering of email lists but leaving spam
control in place, comment out the first <command>INCLUDERC</command> line with
a hash sign (<literal>#</literal>). Note that it uses paths relative to the
current directory.</para>
</listitem>
<listitem>
<para>
@@ -1048,8 +1060,8 @@ poll
mail.domain2.com
<command>VERBOSE</command> — Causes Procmail to log more
information. This option is useful for debugging.</para>
</listitem>
</itemizedlist>
- <para>Other important environmental variables are pulled from the shell, such
as <command>LOGNAME</command>, which is the login name;
<command>HOME</command>, which is the location of the home directory; and
<command>SHELL</command>, which is the default shell.</para>
- <para>A comprehensive explanation of all environments variables, as well as
their default values, is available in the <filename>procmailrc</filename> man
page.</para>
+ <para>Other important environmental variables are pulled from the shell, such
as <command>LOGNAME</command>, the login name;
<command>HOME</command>, the location of the home directory; and
<command>SHELL</command>, the default shell.</para>
+ <para>A comprehensive explanation of all environments variables, and their
default values, is available in the <filename>procmailrc</filename> man
page.</para>
</section>
<section
id="s2-email-procmail-recipes">
@@ -1059,18 +1071,16 @@ poll
mail.domain2.com
<primary>Procmail</primary>
<secondary>recipes</secondary>
</indexterm>
- <para>New users often find the construction of recipes the most difficult
part of learning to use Procmail. To some extent, this is understandable, as recipes do
their message matching using <firstterm>regular expressions</firstterm>, which
is a particular format used to specify qualifications for a matching string. However,
regular expressions are not very difficult to construct and even less difficult to
understand when read. Additionally, the consistency of the way Procmail recipes are
written, regardless of regular expressions, makes it easy to learn by example. To see
example Procmail recipes, refer to <xref
+ <para>New users often find the construction of recipes the most difficult
part of learning to use Procmail. This difficulty is often attributed to recipes matching
messages by using <firstterm>regular expressions</firstterm> which are used to
specify qualifications for string matching. However, regular expressions are not very
difficult to construct and even less difficult to understand when read. Additionally, the
consistency of the way Procmail recipes are written, regardless of regular expressions,
makes it easy to learn by example. To see example Procmail recipes, see <xref
linkend="s3-email-procmail-recipes-examples"/>.</para>
<para>Procmail recipes take the following form:</para>
- <programlisting>:0<replaceable>flags</replaceable>:
<replaceable>lockfile-name</replaceable> *
<replaceable>special-condition-character</replaceable>
- <replaceable>condition-1</replaceable> *
<replaceable>special-condition-character</replaceable>
- <replaceable>condition-2</replaceable> *
<replaceable>special-condition-character</replaceable>
- <replaceable>condition-N</replaceable>
+ <screen>:0
<optional><replaceable>flags</replaceable></optional>
<optional>: <replaceable>lockfile-name</replaceable> </optional>
+* <optional>
<replaceable>condition_1_special-condition-character</replaceable>
<replaceable>condition_1_regular_expression</replaceable> </optional>
+* <optional>
<replaceable>condition_2_special-condition-character</replaceable>
<replaceable>condition-2_regular_expression</replaceable> </optional>
+* <optional>
<replaceable>condition_N_special-condition-character</replaceable>
<replaceable>condition-N_regular_expression</replaceable> </optional>
<replaceable>special-action-character</replaceable>
- <replaceable>action-to-perform</replaceable></programlisting>
- <para>The first two characters in a Procmail recipe are a colon and a zero.
Various flags can be placed after the zero to control how Procmail processes the recipe. A
colon after the <command><replaceable>flags</replaceable>
- </command> section specifies that a lockfile is created for this message.
If a lockfile is created, the name can be specified by replacing
<command><replaceable>lockfile-name</replaceable>
- </command>.</para>
+ <replaceable>action-to-perform</replaceable></screen>
+ <para>The first two characters in a Procmail recipe are a colon and a zero.
Various flags can be placed after the zero to control how Procmail processes the recipe. A
colon after the
<command><replaceable>flags</replaceable></command> section
specifies that a lockfile is created for this message. If a lockfile is created, the name
can be specified by replacing
<command><replaceable>lockfile-name</replaceable></command>.</para>
<para>A recipe can contain several conditions to match against the message.
If it has no conditions, every message matches the recipe. Regular expressions are placed
in some conditions to facilitate message matching. If multiple conditions are used, they
must all match for the action to be performed. Conditions are checked based on the flags
set in the recipe's first line. Optional special characters placed after the asterisk
character (<command>*</command>) can further control the
condition.</para>
<para>The
<command><replaceable>action-to-perform</replaceable></command>
argument specifies the action taken when the message matches one of the conditions. There
can only be one action per recipe. In many cases, the name of a mailbox is used here to
direct matching messages into that file, effectively sorting the email. Special action
characters may also be used before the action is specified. See <xref
linkend="s3-email-procmail-recipes-special"/> for more
information.</para>
@@ -1102,7 +1112,7 @@ poll
mail.domain2.com
<secondary>recipes</secondary>
<tertiary>flags</tertiary>
</indexterm>
- <para>Flags are essential to determine how or if a recipe's conditions
are compared to a message. The following flags are commonly used:</para>
+ <para>Flags are essential to determine how or if a recipe's conditions
are compared to a message. The <application>egrep</application> utility is
used internally for matching of the conditions. The following flags are commonly
used:</para>
<itemizedlist>
<listitem>
<para>
@@ -1130,7 +1140,7 @@ poll
mail.domain2.com
</listitem>
<listitem>
<para>
- <command>E</command> — While similar to the
<command>A</command> flag, the conditions in the recipe are only compared to
the message if the immediately preceding the recipe without an
<command>E</command> flag did not match. This is comparable to an
<wordasword>else</wordasword> action.</para>
+ <command>E</command> — While similar to the
<command>A</command> flag, the conditions in the recipe are only compared to
the message if the immediately preceding recipe without an
<command>E</command> flag did not match. This is comparable to an
<wordasword>else</wordasword> action.</para>
</listitem>
<listitem>
<para>
@@ -1157,7 +1167,7 @@ poll
mail.domain2.com
<command>W</command> — Is identical to
<command>w</command> except that "Program failure" messages are
suppressed.</para>
</listitem>
</itemizedlist>
- <para>For a detailed list of additional flags, refer to the
<filename>procmailrc</filename> man page.</para>
+ <para>For a detailed list of additional flags, see the
<filename>procmailrc</filename> man page.</para>
</section>
<section
id="s3-email-procmail-recipes-lockfile">
@@ -1233,15 +1243,17 @@ poll
mail.domain2.com
<tertiary>examples</tertiary>
</indexterm>
<para>Procmail is an extremely flexible program, but as a result of this
flexibility, composing Procmail recipes from scratch can be difficult for new
users.</para>
- <para>The best way to develop the skills to build Procmail recipe
conditions stems from a strong understanding of regular expressions combined with looking
at many examples built by others. A thorough explanation of regular expressions is beyond
the scope of this section. The structure of Procmail recipes and useful sample Procmail
recipes can be found at various places on the Internet (such as <ulink
-
url="http://www.iki.fi/era/procmail/links.html">http://www.iki.fi/era/procmail/links.html</ulink>).
The proper use and adaptation of regular expressions can be derived by viewing these
recipe examples. In addition, introductory information about basic regular expression
rules can be found in the <filename>grep</filename> man page.</para>
+ <para>The best way to develop the skills to build Procmail recipe
conditions stems from a strong understanding of regular expressions combined with looking
at many examples built by others. A thorough explanation of regular expressions is beyond
the scope of this section. The structure of Procmail recipes and useful sample Procmail
recipes can be found at various places on the Internet. The proper use and adaptation of
regular expressions can be derived by viewing these recipe examples. In addition,
introductory information about basic regular expression rules can be found in the
<filename>grep(1)</filename> man page.</para>
<para>The following simple examples demonstrate the basic structure of
Procmail recipes and can provide the foundation for more intricate
constructions.</para>
<para>A basic recipe may not even contain conditions, as is illustrated in
the following example:</para>
- <programlisting>:0: new-mail.spool</programlisting>
+ <screen>:0:
+new-mail.spool</screen>
<para>The first line specifies that a local lockfile is to be created but
does not specify a name, so Procmail uses the destination file name and appends the value
specified in the <command>LOCKEXT</command> environment variable. No condition
is specified, so every message matches this recipe and is placed in the single spool file
called <filename>new-mail.spool</filename>, located within the directory
specified by the <command>MAILDIR</command> environment variable. An MUA can
then view messages in this file.</para>
<para>A basic recipe, such as this, can be placed at the end of all
<filename>rc</filename> files to direct messages to a default
location.</para>
<para>The following example matched messages from a specific email address
and throws them away.</para>
- <programlisting>:0 * ^From: spammer(a)domain.com
/dev/null</programlisting>
+ <screen>:0
+* ^From: spammer(a)domain.com
+/dev/null</screen>
<para>With this example, any messages sent by
<computeroutput>spammer(a)domain.com</computeroutput> are sent to the
<filename>/dev/null</filename> device, deleting them.</para>
<warning>
<title>Sending messages to /dev/null</title>
@@ -1249,7 +1261,9 @@ poll
mail.domain2.com
<para>A better solution is to point the recipe's action to a special
mailbox, which can be checked from time to time to look for false positives. Once
satisfied that no messages are accidentally being matched, delete the mailbox and direct
the action to send the messages to
<filename>/dev/null</filename>.</para>
</warning>
<para>The following recipe grabs email sent from a particular mailing list
and places it in a specified folder.</para>
- <programlisting>:0: * ^(From|Cc|To).*tux-lug tuxlug</programlisting>
+ <screen>:0:
+* ^(From|Cc|To).*tux-lug
+tuxlug</screen>
<para>Any messages sent from the
<computeroutput>tux-lug(a)domain.com</computeroutput> mailing list are placed in
the <filename>tuxlug</filename> mailbox automatically for the MUA. Note that
the condition in this example matches the message if it has the mailing list's email
address on the <computeroutput>From</computeroutput>,
<computeroutput>Cc</computeroutput>, or
<computeroutput>To</computeroutput> lines.</para>
<para>Consult the many Procmail online resources available in <xref
linkend="s1-email-additional-resources"/> for more detailed and
powerful recipes.</para>
@@ -1280,8 +1294,8 @@ poll
mail.domain2.com
<note>
<title>Installing the spamassassin package</title>
<para>In order to use
<application>SpamAssassin</application>, first ensure the
<package>spamassassin</package> package is installed on your system by
running, as <systemitem
class="username">root</systemitem>:</para>
- <screen><command>yum install
spamassassin</command></screen>
- <para>For more information on installing packages with Yum, refer to
<xref linkend="sec-Installing"/>.</para>
+ <screen>~]# <command>yum install
spamassassin</command></screen>
+ <para>For more information on installing packages with Yum, see <xref
linkend="sec-Installing"/>.</para>
</note>
<para>The easiest way for a local user to use SpamAssassin is to place the
following line near the top of the <filename>~/.procmailrc</filename>
file:</para>
<programlisting>INCLUDERC=/etc/mail/spamassassin/spamassassin-default.rc</programlisting>
@@ -1312,13 +1326,13 @@ poll
mail.domain2.com
<section
id="s2-email-security">
<title>Securing Communication</title>
- <para>Popular MUAs included with &MAJOROS;, such as
<application>Evolution</application> and <command>mutt</command>
offer SSL-encrypted email sessions.</para>
+ <para>Popular MUAs included with &MAJOROS;, such as
<application>Evolution</application> and
<application>Mutt</application> offer SSL-encrypted email
sessions.</para>
<indexterm
significance="normal">
<primary>email</primary>
<secondary>security</secondary>
</indexterm>
- <para>Like any other service that flows over a network unencrypted, important
email information, such as usernames, passwords, and entire messages, may be intercepted
and viewed by users on the network. Additionally, since the standard <systemitem
class="protocol">POP</systemitem> and <systemitem
class="protocol">IMAP</systemitem> protocols pass authentication
information unencrypted, it is possible for an attacker to gain access to user accounts by
collecting usernames and passwords as they are passed over the network.</para>
+ <para>Like any other service that flows over a network unencrypted, important
email information, such as user names, passwords, and entire messages, may be intercepted
and viewed by users on the network. Additionally, since the standard <systemitem
class="protocol">POP</systemitem> and <systemitem
class="protocol">IMAP</systemitem> protocols pass authentication
information unencrypted, it is possible for an attacker to gain access to user accounts by
collecting user names and passwords as they are passed over the network.</para>
<section
id="s3-email-security-clients">
<title>Secure Email Clients</title>
@@ -1358,18 +1372,19 @@
dovecot]# <command>/usr/libexec/dovecot/mkcert.sh</command></screen>
<para>Once finished, make sure you have the following configurations in
your <filename>/etc/dovecot/conf.d/10-ssl.conf</filename> file:</para>
<programlisting>ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem</programlisting>
- <para>Execute the <command>systemctl restart
dovecot.service</command> command to restart the
<command>dovecot</command> daemon.</para>
+ <para>Issue the following command to restart the
<command>dovecot</command> daemon:</para>
+ <screen>~]# <command>systemctl restart
dovecot</command></screen>
<para>Alternatively, the <command>stunnel</command> command can
be used as an SSL encryption wrapper around the standard, non-secure connections to
<systemitem class="protocol">IMAP</systemitem> or <systemitem
class="protocol">POP</systemitem> services.</para>
<para>The <command>stunnel</command> utility uses external
OpenSSL libraries included with &MAJOROS; to provide strong cryptography and to
protect the network connections. It is recommended to apply to a CA to obtain an SSL
certificate, but it is also possible to create a self-signed certificate.</para>
<note>
<title>Installing the stunnel package</title>
<para>In order to use <command>stunnel</command>, first
ensure the <package>stunnel</package> package is installed on your system by
running, as <systemitem
class="username">root</systemitem>:</para>
- <screen><command>yum install
stunnel</command></screen>
- <para>For more information on installing packages with Yum, refer to
<xref linkend="sec-Installing"/>.</para>
+ <screen>~]# <command>yum install
stunnel</command></screen>
+ <para>For more information on installing packages with Yum, see <xref
linkend="sec-Installing"/>.</para>
</note>
-
+
<para>To create a self-signed SSL certificate, change to the
<filename>/etc/pki/tls/certs/</filename> directory, and type the following
command:</para>
- <screen>certs]# <command>make
stunnel.pem</command></screen>
+ <screen>certs]# <command>make
stunnel.pem</command></screen>
<para>Answer all of the questions to complete the process.</para>
<para>Once the certificate is generated, create an
<command>stunnel</command> configuration file, for example
<filename>/etc/stunnel/mail.conf</filename>, with the following
content:</para>
<programlisting>cert = /etc/pki/tls/certs/stunnel.pem
@@ -1380,9 +1395,9 @@ connect = 110
[imaps]
accept = 993
-connect = 143</programlisting>
+connect = 143</programlisting>
<para>Once you start <command>stunnel</command> with the
created configuration file using the <command>/usr/bin/stunnel
/etc/stunnel/mail.conf</command> command, it will be possible to use an
<systemitem class="protocol">IMAP</systemitem> or a <systemitem
class="protocol">POP</systemitem> email client and connect to the email
server using SSL encryption.</para>
- <para>For more information on <command>stunnel</command>, refer
to the <command>stunnel</command> man page or the documents in the
<filename>/usr/share/doc/stunnel/</filename> directory.</para>
+ <para>For more information on <command>stunnel</command>, see
the <filename>stunnel(8)</filename> man page or the documents in the
<filename class="directory">/usr/share/doc/stunnel/</filename>
directory.</para>
</section>
</section>
</section>
@@ -1421,7 +1436,7 @@ connect = 143</programlisting>
</indexterm>
<itemizedlist>
<listitem>
- <para>Information on configuring Sendmail is included with the
<filename>sendmail</filename> and <filename>sendmail-cf</filename>
packages.</para>
+ <para>Information on configuring Sendmail is included with the
<package>sendmail</package> and <package>sendmail-cf</package>
packages.</para>
<itemizedlist>
<listitem>
<para>
@@ -1432,15 +1447,15 @@ connect = 143</programlisting>
</listitem>
<listitem>
<para>
- <filename>/usr/share/doc/postfix/</filename> — Contains a large
amount of information about ways to configure Postfix.</para>
+ <filename
class="directory">/usr/share/doc/postfix/</filename> — Contains a large
amount of information on how to configure Postfix.</para>
</listitem>
<listitem>
<para>
- <filename>/usr/share/doc/fetchmail/</filename> — Contains a full
list of Fetchmail features in the <filename>FEATURES</filename> file and an
introductory <filename>FAQ</filename> document.</para>
+ <filename
class="directory">/usr/share/doc/fetchmail/</filename> — Contains a
full list of Fetchmail features in the <filename>FEATURES</filename> file and
an introductory <filename>FAQ</filename> document.</para>
</listitem>
<listitem>
<para>
- <filename>/usr/share/doc/procmail/</filename> — Contains a
<filename>README</filename> file that provides an overview of Procmail, a
<filename>FEATURES</filename> file that explores every program feature, and an
<filename>FAQ</filename> file with answers to many common configuration
questions.</para>
+ <filename
class="directory">/usr/share/doc/procmail/</filename> — Contains a
<filename>README</filename> file that provides an overview of Procmail, a
<filename>FEATURES</filename> file that explores every program feature, and an
<filename>FAQ</filename> file with answers to many common configuration
questions.</para>
<para>When learning how Procmail works and creating new recipes, the
following Procmail man pages are invaluable:</para>
<itemizedlist>
<listitem>
@@ -1495,7 +1510,7 @@ connect = 143</programlisting>
<listitem>
<para>
<ulink
-
url="http://fetchmail.berlios.de/">http://fetchmail.berlios.de/</ulink>
— The home page for Fetchmail, featuring an online manual, and a thorough
FAQ.</para>
+
url="http://www.fetchmail.info/fetchmail-FAQ.html">http://www.fetchmail.info/fetchmail-FAQ.html</ulink>
— A thorough FAQ about Fetchmail.</para>
</listitem>
<listitem>
<para>
@@ -1505,11 +1520,6 @@ connect = 143</programlisting>
<listitem>
<para>
<ulink
-
url="http://partmaps.org/era/procmail/mini-faq.html">http://...
— An excellent Procmail FAQ, offers troubleshooting tips, details about file locking, and
the use of wildcard characters.</para>
- </listitem>
- <listitem>
- <para>
- <ulink
url="http://www.uwasa.fi/~ts/info/proctips.html">http://www.uwasa.fi/~ts/info/proctips.html</ulink>
— Contains dozens of tips that make using Procmail much easier. Includes instructions on
how to test <filename>.procmailrc</filename> files and use Procmail scoring to
decide if a particular action should be taken.</para>
</listitem>
<listitem>