glfs/server/mail/sendmail.xml
Pierre Labastie 85580446b2 Remove spaces at the end of lines
I know it is somewhat useless, but I don't like them for
two reasons: first they cannot be seen, and I do not like things I
cannot see. Second, git highlights them, and this is disturbing...
2021-09-06 19:42:49 +02:00

529 lines
17 KiB
XML

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../../general.ent">
%general-entities;
<!-- Downloads a web page
<!ENTITY sendmail-download-http "http://www.sendmail.org/ftp/sendmail.&sendmail-version;.tar.gz"> -->
<!ENTITY sendmail-download-http " ">
<!ENTITY sendmail-download-ftp "ftp://ftp.sendmail.org/pub/sendmail/sendmail.&sendmail-version;.tar.gz">
<!ENTITY sendmail-md5sum "cd3c3f7b2db60c362f07eecbebd99bf4">
<!ENTITY sendmail-size "2.2 MB">
<!ENTITY sendmail-buildsize "20 MB">
<!ENTITY sendmail-time "0.2 SBU">
]>
<sect1 id="sendmail" xreflabel="sendmail-&sendmail-version;">
<?dbhtml filename="sendmail.html"?>
<sect1info>
<date>$Date$</date>
</sect1info>
<title>sendmail-&sendmail-version;</title>
<indexterm zone="sendmail">
<primary sortas="a-sendmail">sendmail</primary>
</indexterm>
<sect2 role="package">
<title>Introduction to sendmail</title>
<para>
The <application>sendmail</application> package contains a Mail
Transport Agent (MTA).
</para>
&lfs110a_checked;
<bridgehead renderas="sect3">Package Information</bridgehead>
<itemizedlist spacing="compact">
<listitem>
<para>
Download (HTTP): <ulink url="&sendmail-download-http;"/>
</para>
</listitem>
<listitem>
<para>
Download (FTP): <ulink url="&sendmail-download-ftp;"/>
</para>
</listitem>
<listitem>
<para>
Download MD5 sum: &sendmail-md5sum;
</para>
</listitem>
<listitem>
<para>
Download size: &sendmail-size;
</para>
</listitem>
<listitem>
<para>
Estimated disk space required: &sendmail-buildsize;
</para>
</listitem>
<listitem>
<para>
Estimated build time: &sendmail-time;
</para>
</listitem>
</itemizedlist>
<!-- Sendmail 8.16.1 does have official support for OpenSSL 1.1
<itemizedlist spacing="compact">
<listitem>
<para>
Required patch:
<ulink url="&patch-root;/sendmail.&sendmail-version;-openssl-1.patch"/>
</para>
</listitem>
</itemizedlist>
-->
<bridgehead renderas="sect3">sendmail Dependencies</bridgehead>
<bridgehead renderas="sect4">Required</bridgehead>
<para role="required">
<xref linkend="openldap"/> (client)
</para>
<bridgehead renderas="sect4">Recommended</bridgehead>
<para role="recommended">
<xref linkend="cyrus-sasl"/>
</para>
<bridgehead renderas="sect4">Optional</bridgehead>
<para role="optional">
<xref linkend="gs"/> (for creating PDF documentation),
<xref linkend="procmail"/> (the configuration proposed below requires
that <command>procmail</command> be present at run-time), and
<ulink url="https://github.com/chaos/nph">nph</ulink>
</para>
<para condition="html" role="usernotes">User Notes:
<ulink url="&blfs-wiki;/sendmail"/></para>
</sect2>
<sect2 role="installation">
<title>Installation of sendmail</title>
<para>
Before building <application>sendmail</application>, create the
required user, group and directory with the following commands issued as
the <systemitem class="username">root</systemitem> user:
</para>
<screen role="root"><userinput>groupadd -g 26 smmsp &amp;&amp;
useradd -c "Sendmail Daemon" -g smmsp -d /dev/null \
-s /bin/false -u 26 smmsp &amp;&amp;
chmod -v 1777 /var/mail &amp;&amp;
install -v -m700 -d /var/spool/mqueue</userinput></screen>
<note>
<para>
See the source tree <filename>sendmail/README</filename> file
for information on linking optional packages into the build. Use the
example below, which adds support for SASL, StartTLS
(<application>OpenSSL</application>) and
<application>OpenLDAP</application>, as a starting point. Of course,
modify it to suit your particular needs.
</para>
</note>
<screen><userinput>cat &gt;&gt; devtools/Site/site.config.m4 &lt;&lt; "EOF"
<literal>APPENDDEF(`confENVDEF',`-DSTARTTLS -DSASL -DLDAPMAP -DHASFLOCK')
APPENDDEF(`confLIBS', `-lssl -lcrypto -lsasl2 -lldap -llber -ldb')
APPENDDEF(`confINCDIRS', `-I/usr/include/sasl')</literal>
EOF</userinput></screen>
<para>
Install <application>sendmail</application> with the following commands:
</para>
<screen><userinput>cat &gt;&gt; devtools/Site/site.config.m4 &lt;&lt; "EOF"
<literal>define(`confMANGRP',`root')
define(`confMANOWN',`root')
define(`confSBINGRP',`root')
define(`confUBINGRP',`root')
define(`confUBINOWN',`root')</literal>
EOF
sed -i 's|/usr/man/man|/usr/share/man/man|' \
devtools/OS/Linux &amp;&amp;
cd sendmail &amp;&amp;
sh Build &amp;&amp;
cd ../cf/cf &amp;&amp;
cp generic-linux.mc sendmail.mc &amp;&amp;
sh Build sendmail.cf</userinput></screen>
<para>
This package does not come with a test suite.
</para>
<!-- When doing a DESTDIR= build, for example, for an update to check for new
installed files, you need to create $DEST/usr/{bin,sbin,share/man/man{1,5,8}
first. "sh Build" is a wrapper for Make, so it will accept DESTDIR=
as an argument. -->
<para>
Now, as the <systemitem class="username">root</systemitem> user:
</para>
<screen role="root"><userinput>install -v -d -m755 /etc/mail &amp;&amp;
sh Build install-cf &amp;&amp;
cd ../.. &amp;&amp;
sh Build install &amp;&amp;
install -v -m644 cf/cf/{submit,sendmail}.mc /etc/mail &amp;&amp;
cp -v -R cf/* /etc/mail &amp;&amp;
install -v -m755 -d /usr/share/doc/sendmail-&sendmail-version;/{cf,sendmail} &amp;&amp;
install -v -m644 CACerts FAQ KNOWNBUGS LICENSE PGPKEYS README RELEASE_NOTES \
/usr/share/doc/sendmail-&sendmail-version; &amp;&amp;
install -v -m644 sendmail/{README,SECURITY,TRACEFLAGS,TUNING} \
/usr/share/doc/sendmail-&sendmail-version;/sendmail &amp;&amp;
install -v -m644 cf/README /usr/share/doc/sendmail-&sendmail-version;/cf &amp;&amp;
for manpage in sendmail editmap mailstats makemap praliases smrsh
do
install -v -m644 $manpage/$manpage.8 /usr/share/man/man8
done &amp;&amp;
install -v -m644 sendmail/aliases.5 /usr/share/man/man5 &amp;&amp;
install -v -m644 sendmail/mailq.1 /usr/share/man/man1 &amp;&amp;
install -v -m644 sendmail/newaliases.1 /usr/share/man/man1 &amp;&amp;
install -v -m644 vacation/vacation.1 /usr/share/man/man1</userinput></screen>
<para>
Install the <application>sendmail</application> Installation and
Operations Guide with the following commands:
</para>
<note>
<para>
Remove <filename>op.pdf</filename> from the <command>make</command>
and <command>install</command> commands below if
you don't have <application>Ghostscript</application> installed.
</para>
</note>
<screen remap="doc"><userinput>cd doc/op &amp;&amp;
sed -i 's/groff/GROFF_NO_SGR=1 groff/' Makefile &amp;&amp;
make op.txt op.pdf</userinput></screen>
<para>
Now, as the <systemitem class="username">root</systemitem> user:
</para>
<screen role="root"
remap="doc"><userinput>install -v -d -m755 /usr/share/doc/sendmail-&sendmail-version; &amp;&amp;
install -v -m644 op.ps op.txt op.pdf /usr/share/doc/sendmail-&sendmail-version; &amp;&amp;
cd ../..</userinput></screen>
</sect2>
<sect2 role="commands">
<title>Command Explanations</title>
<para>
<command>cat &gt; devtools/Site/site.config.m4 &lt;&lt; "EOF"</command>:
This creates a configuration file changing some of the default settings.
</para>
<para>
<command>sed ... devtools/OS/Linux</command>: The site.config.m4
does not honor a change to the man directory, so fix it in the OS
definitions.
</para>
<!-- No longer valid with 8.16.1
<para>
<command>sed ... include/sm/bdb.h</command>: This allows sendmail to
build properly with <xref linkend='db'/> versions 5 and above.
</para>
-->
<para>
<command>sh Build; sh Build sendmail.cf; sh Build install-cf;
sh Build install</command>: <application>sendmail</application> uses an
<application>m4</application> based build script to create the various
<filename>Makefile</filename>s. These commands build and install the
package.
</para>
<para>
<command>for manpage in...;do...;done; install ...</command>: The man
pages are installed already formatted and <command>man</command> displays
them somewhat garbled. These commands replace the formatted pages with
pages <command>man</command> can display properly.
</para>
</sect2>
<sect2 role="configuration">
<title>Configuring sendmail</title>
<sect3 id="sendmail-config">
<title>Config Files</title>
<para>
<filename>/etc/mail/*</filename>
</para>
<indexterm zone="sendmail sendmail-config">
<primary sortas="e-etc-mail">/etc/mail/*</primary>
</indexterm>
</sect3>
<sect3>
<title>Configuration Information</title>
<note>
<para>
Ensure you have a fully qualified domain name defined
in <filename>/etc/hosts</filename> for your system before proceeding.
</para>
</note>
<para>
Create the <filename>/etc/mail/local-host-names</filename> and
<filename>/etc/mail/aliases</filename> files using the following
commands as the <systemitem class="username">root</systemitem> user:
</para>
<screen role="root"><userinput>echo $(hostname) > /etc/mail/local-host-names
cat &gt; /etc/mail/aliases &lt;&lt; "EOF"
<literal>postmaster: root
MAILER-DAEMON: root</literal>
EOF
newaliases</userinput></screen>
<para>
<application>sendmail</application>'s primary configuration file,
<filename>/etc/mail/sendmail.cf</filename>, is complex and not meant to
be directly edited. The recommended method for changing it is to modify
<filename>/etc/mail/sendmail.mc</filename> and various
<application>m4</application> files, then run the <command>m4</command>
macro processor from within
<filename class='directory'>/etc/mail</filename> as follows:
</para>
<screen role="root"><userinput>cd /etc/mail &amp;&amp;
m4 m4/cf.m4 sendmail.mc > sendmail.cf</userinput></screen>
<para>
A full explanation of the files to modify, and the available
parameters can be found in <filename>/etc/mail/README</filename>.
</para>
</sect3>
<sect3 id="sendmail-init">
<title><phrase revision="sysv">Boot Script</phrase>
<phrase revision="systemd">Systemd Unit</phrase></title>
<para>
To automate the running of <application>sendmail</application>
at startup, install the
<phrase revision="sysv"><filename>/etc/rc.d/init.d/sendmail</filename>
init script</phrase>
<phrase revision="systemd"><filename>sendmail.service</filename>
unit</phrase> included in the
<xref linkend="bootscripts" revision="sysv"/>
<xref linkend="systemd-units" revision="systemd"/> package:
</para>
<indexterm zone="sendmail sendmail-init">
<primary sortas="f-sendmail-init">sendmail</primary>
</indexterm>
<screen role="root"><userinput>make install-sendmail</userinput></screen>
<note>
<para>
The -qNm option to <command>sendmail</command>, where N is number
of minutes, controls how often <application>sendmail</application>
will process the mail queue. A default of 5 minutes is used in the
<phrase revision="sysv">init script.</phrase>
<phrase revision="systemd">systemd unit.</phrase> Individual
workstation users may want to set this as low as 1 minute, large
installations handling more mail may want to set it higher.
</para>
</note>
</sect3>
</sect2>
<sect2 role="content">
<title>Contents</title>
<segmentedlist>
<segtitle>Installed Programs</segtitle>
<segtitle>Installed Libraries</segtitle>
<segtitle>Installed Directories</segtitle>
<seglistitem>
<seg>editmap, mailstats, makemap, praliases, sendmail, smrsh,
and vacation; symlinks to /usr/sbin/sendmail: hoststat, mailq,
newaliases, and purgestat</seg>
<seg>None</seg>
<seg>/etc/mail, /usr/share/doc/sendmail-&sendmail-version;,
and /var/spool/clientmqueue</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="editmap">
<term><command>editmap</command></term>
<listitem>
<para>
queries and edits <application>sendmail</application> map files
</para>
<indexterm zone="sendmail editmap">
<primary sortas="b-editmap">editmap</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="hoststat">
<term><command>hoststat</command></term>
<listitem>
<para>
prints <application>sendmail</application>'s persistent host status
</para>
<indexterm zone="sendmail hoststat">
<primary sortas="b-hoststat">hoststat</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="mailstats">
<term><command>mailstats</command></term>
<listitem>
<para>
displays <application>sendmail</application> statistics
</para>
<indexterm zone="sendmail mailstats">
<primary sortas="b-mailstats">mailstats</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="mailq-sendmail">
<term><command>mailq</command></term>
<listitem>
<para>
prints a summary of outbound mail messages waiting for delivery
</para>
<indexterm zone="sendmail mailq-sendmail">
<primary sortas="b-mailq">mailq</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="makemap">
<term><command>makemap</command></term>
<listitem>
<para>
creates <application>sendmail</application> map files
</para>
<indexterm zone="sendmail makemap">
<primary sortas="b-makemap">makemap</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="newaliases-sendmail">
<term><command>newaliases</command></term>
<listitem>
<para>
rebuilds <filename>/etc/mail/aliases.db</filename> from the
contents of <filename>/etc/mail/aliases</filename>
</para>
<indexterm zone="sendmail newaliases-sendmail">
<primary sortas="b-newaliases">newaliases</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="praliases">
<term><command>praliases</command></term>
<listitem>
<para>
displays current <application>sendmail</application> aliases
</para>
<indexterm zone="sendmail praliases">
<primary sortas="b-praliases">praliases</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="purgestat">
<term><command>purgestat</command></term>
<listitem>
<para>
causes <application>sendmail</application> to clear (purge)
all its host-status information
</para>
<indexterm zone="sendmail purgestat">
<primary sortas="b-purgestat">purgestat</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="sendmail-prog-sendmail">
<term><command>sendmail</command></term>
<listitem>
<para>
is the <application>sendmail</application> mail transport agent
</para>
<indexterm zone="sendmail sendmail-prog-sendmail">
<primary sortas="b-sendmail">sendmail</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="smrsh">
<term><command>smrsh</command></term>
<listitem>
<para>
is a restricted shell for <application>sendmail</application>
</para>
<indexterm zone="sendmail smrsh">
<primary sortas="b-smrsh">smrsh</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="vacation-sendmail">
<term><command>vacation</command></term>
<listitem>
<para>
is an email auto responder
</para>
<indexterm zone="sendmail vacation-sendmail">
<primary sortas="b-vacation">vacation</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>