21. Mail Server Software
MTA是将邮件从一台机器传送到另一台机器的程序。传统的MTA是Sendmail,但是还有其他几种选择。
除了SMTP服务器,还有一个POP服务器(qpopper)和一个IMAP服务器(Courier-IMAP)。
21.1 Dovecot-2.3.20
简介Dovecot
Dovecot是一个Internet消息访问协议(IMAP)和邮局协议(POP)服务器,编写时主要考虑了安全性。Dovecot的目标是轻量级,快速和易于设置以及高度可配置和易于扩展的插件。
已知此包可以使用LFS 11.3平台进行构建并正常工作。
包信息
-
下载 (HTTP): https://www.dovecot.org/releases/2.3/dovecot-2.3.20.tar.gz
-
下载 MD5 校验和: b8add62d0311dcc95ac25b379e8ba043
-
下载大小: 7.4 MB
-
预计所需磁盘空间: 235 MB
-
预计构建时间: 4.8 SBU
额外下载
-
必要补丁: https://www.linuxfromscratch.org/patches/blfs/11.3/dovecot-2.3.20-openssl3_fixes-1.patch
-
必要补丁: https://www.linuxfromscratch.org/patches/blfs/11.3/dovecot-2.3.20-security_fix-1.patch
Dovecot 依赖
必要
可选
CLucene-2.3.3.4, ICU-72.1, libcap-2.67 with PAM, Linux-PAM-1.5.2, Lua-5.4.4, MariaDB-10.6.12 或 MySQL, OpenLDAP-2.6.4, PostgreSQL-15.2, SQLite-3.40.1, Valgrind-3.20.0, xfsprogs-6.1.1, Cassandra, lz4, stemmer 和 libsodium
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/dovecot
安装Dovecot
应该有专门的用户和组用于无特权的Dovecot进程和处理用户的登录。以root用户发出以下命令:
groupadd -g 42 dovecot &&
useradd -c "Dovecot unprivileged user" -d /dev/null -u 42 \
-g dovecot -s /bin/false dovecot &&
groupadd -g 43 dovenull &&
useradd -c "Dovecot login user" -d /dev/null -u 43 \
-g dovenull -s /bin/false dovenull
首先,应用一个补丁来修复OpenSSL-3的问题:
patch -Np1 -i ../dovecot-2.3.20-openssl3_fixes-1.patch
接下来,应用补丁来修复安全漏洞:
patch -Np1 -i ../dovecot-2.3.20-security_fix-1.patch
运行以下命令安装Dovecot:
CPPFLAGS="-I/usr/include/tirpc" \
LDFLAGS+=" -ltirpc" \
./configure --prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--docdir=/usr/share/doc/dovecot-2.3.20 \
--disable-static &&
make
要测试结果,执行 make -k check.
现在,作为root用户:
make install
命令解释
CPPFLAGS=… LDFLAGS+=…: 使用libtirpc构建,而不是最近删除的由GlibC提供的RPC代码。
--disable-static: 此开关防止安装库的静态版本。
--with-ldap: 此开关启用OpenLDAP认证支持。
--with-pgsql: 此开关启用PostgreSQL数据库支持。
--with-mysql: 此开关启用MySQL数据库支持。
--with-sqlite: 此开关启用SQLite数据库支持。
--with-lucene: 此开关启用CLucene全文搜索支持。
--with-lua: 此开关启用Lua插件支持。这包括一个邮件和推送通知插件。
配置 Dovecot
配置文件
/etc/dovecot/dovecot.conf, /etc/dovecot/conf.d/*, 和 /etc/dovecot/local.conf
配置信息
复制一个示例配置,你可以用它作为一个起点:
cp -rv /usr/share/doc/dovecot-2.3.20/example-config/* /etc/dovecot
下面的配置是使用本地用户进行身份验证和邮箱定位的IMAP服务的简单概念验证。从conf.d目录读取文件会被注释掉,因为包含的示例配置需要OpenSSL和Linux PAM。
sed -i '/^\!include / s/^/#/' /etc/dovecot/dovecot.conf &&
chmod -v 1777 /var/mail &&
cat > /etc/dovecot/local.conf << "EOF"
protocols = imap
ssl = no
# The next line is only needed if you have no IPv6 network interfaces
listen = *
mail_location = mbox:~/Mail:INBOX=/var/mail/%u
userdb {
driver = passwd
}
passdb {
driver = shadow
}
EOF
如果您计划在生产环境中使用Dovecot,您一定要阅读官方文档https://wiki2.dovecot.org/。
Systemd Unit
要在引导时启动dovecot守护进程,使用以下命令启用之前安装的systemd单元:
systemctl enable dovecot
内容
安装程序: doveadm, doveconf, dovecot, dovecot-sysreport, 和 dsync (符号链接)
安装库: various internal plugins in /usr/lib/dovecot
安装目录: /etc/dovecot, /usr/{include,lib,libexec,share}/dovecot 和 /usr/share/doc/dovecot-2.3.20
简短描述
doveadm 是Dovecot管理工具。
doveconf 是Dovecot的配置转储工具。
dovecot 是IMAP和POP服务器。
dovecot-sysreport 在上游提交bug报告时,打印对Dovecot开发人员有用的系统信息。
dsync 是Dovecot的邮箱同步实用程序。
21.2 Exim-4.96
简介Exim
Exim包包含一个由剑桥大学编写的邮件传输代理,在GNU公共许可证下发布。
已知此包可以使用LFS 11.3平台进行构建并正常工作。
包信息
-
下载 (HTTP): https://ftp.exim.org/pub/exim/exim4/exim-4.96.tar.xz
-
下载 (FTP): ftp://ftp.exim.org/pub/exim/exim4/exim-4.96.tar.xz
-
下载 MD5 校验和: 0d10d5b10f2af77ec8c2c2fe5be6c1ad
-
下载大小: 1.8 MB
-
预计所需磁盘空间: 20 MB
-
预计构建时间: 0.3 SBU
额外下载
- 其他格式的文档(基于文本的文档随源代码一起提供)可以通过以下链接下载 https://exim.org/docs.html.
Exim 依赖
必要
可选
TDB (GDBM的替代品,内置在LFS中), Cyrus SASL-2.1.28, libidn-1.41, Linux-PAM-1.5.2, MariaDB-10.6.12 或 MySQL, OpenLDAP-2.6.4, GnuTLS-3.8.0, PostgreSQL-15.2, SQLite-3.40.1, a graphical environment, Heimdal GSSAPI, 和 OpenDMARC
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/exim
安装Exim
在构建Exim之前,作为root用户,你应该创建一个组和用户exim,它将运行exim守护进程:
groupadd -g 31 exim &&
useradd -d /dev/null -c "Exim Daemon" -g exim -s /bin/false -u 31 exim
使用以下命令配置Exim:
sed -e 's,^BIN_DIR.*$,BIN_DIRECTORY=/usr/sbin,' \
-e 's,^CONF.*$,CONFIGURE_FILE=/etc/exim.conf,' \
-e 's,^EXIM_USER.*$,EXIM_USER=exim,' \
-e '/# SUPPORT_TLS=yes/s,^#,,' \
-e '/# USE_OPENSSL/s,^#,,' \
-e 's,^EXIM_MONITOR,#EXIM_MONITOR,' src/EDITME > Local/Makefile &&
printf "USE_GDBM = yes\nDBMLIB = -lgdbm\n" >> Local/Makefile &&
如果您想添加Linux PAM支持,还可以运行以下命令:
sed -i '/# SUPPORT_PAM=yes/s,^#,,' Local/Makefile
echo "EXTRALIBS=-lpam" >> Local/Makefile
使用以下命令构建Exim:
make
这个包没有附带测试套件。
现在,作为root用户:
make install &&
install -v -m644 doc/exim.8 /usr/share/man/man8 &&
install -v -d -m755 /usr/share/doc/exim-4.96 &&
install -v -m644 doc/* /usr/share/doc/exim-4.96 &&
ln -sfv exim /usr/sbin/sendmail &&
install -v -d -m750 -o exim -g exim /var/spool/exim
命令解释
sed -e … > Local/Makefile: Exim的大多数配置选项都在Local/Makefile中定义,它是从src/EDITME文件创建的。该命令指定最小选项集。下面列出了这些选项的说明。
printf … > Local/Makefile: 设置这些变量允许使用GDBM而不是默认的Berkeley DB。如果您已经安装了Berkeley DB-5.3.28,请删除此命令。
BIN_DIRECTORY=/usr/sbin: 这将安装/usr/sbin中所有Exim的二进制文件和脚本。
CONFIGURE_FILE=/etc/exim.conf: 这将在/etc中安装Exim的主配置文件。
EXIM_USER=exim: 这告诉Exim,在守护进程不再需要root权限之后,该进程需要将守护进程移交给exim用户。
SUPPORT_TLS=yes: 这允许支持STARTTLS连接。如果你使用这个选项,你需要选择是使用OpenSSL还是GnuTLS(见src/EDITME)。
USE_OPENSSL_PC=openssl: 这告诉构建系统使用OpenSSL,并使用pkg-config找到所需的库。
#EXIM_MONITOR: 通过注释掉Makefile中的EXIM_MONITOR行,可以推迟构建Exim监视器程序,因为它需要X Window System的支持。如果您希望构建监视器程序,请省略这个** 命令并在构建包之前发出以下命令(如果需要,修改Local/eximon.conf): **cp exim_monitor/EDITME Local/eximon.conf。
ln -sfv exim /usr/sbin/sendmail: 为需要它的应用程序创建到sendmail的链接。Exim将接受大多数Sendmail命令行选项。
install -v -m750 -o exim -g exim /var/spool/exim: 由于/var/spool由root所有,并且这个版本的exim提前放弃了root特权,以exim用户运行,它不能创建/var/spool/exim目录。作为变通方法,它是手动创建的。
添加额外功能
要利用部分或全部依赖包,您需要在构建Exim之前修改Local/Makefile,以包含适当的指令和参数来链接其他库。Local/Makefile有大量注释,说明如何做到这一点。下面列出的附加信息可以帮助您链接这些依赖包或添加附加功能。
如果您希望构建和安装.info文档,请参阅https://exim.org/exim-html-4.96/doc/html/spec_html/ch04.html#SECTinsinfdoc。
如果您希望在Exim的接口中构建用于直接从访问控制列表调用病毒和垃圾邮件扫描软件的接口,请取消WITH_CONTENT_SCAN=yes参数的注释,并查看在https://exim.org/exim-html-4.96/doc/html/spec_html/ch45.html上找到的信息。
要使用GDBM以外的后端数据库,请参见 https://exim.org/exim-html-4.96/doc/html/spec_html/ch04.html#SECTdb 的说明。
有关SSL功能,请参阅https://exim.org/exim-html-4.96/doc/html/spec_html/ch04.html#SECTinctlsssl和https://exim.org/exim-html-4.96/doc/html/spec_html/ch42.html的说明。
有关tcpwrappers的功能,请参见 https://exim.org/exim-html-4.96/doc/html/spec_html/ch04.html#SECID27 上的说明。
有关在构建中添加身份验证机制的信息,请参阅 https://exim.org/exim-html-4.96/doc/html/spec_html/index.html 的第33-41章。
有关链接Linux-PAM的信息,请参阅说明 https://exim.org/exim-html-4.96/doc/html/spec_html/ch11.html#SECTexpcond.
有关链接用于Exim名称查找的数据库引擎库的信息,请参阅 https://exim.org/exim-html-4.96/doc/html/spec_html/ch09.html 上的说明。
如果您希望在“测试扩展”(-be)模式下调用Exim时添加Readline支持,请参阅 https://exim.org/exim-html-4.96/doc/html/spec_html/ch05.html#id2525974 的-be部分中的信息。
您可能希望修改默认配置并将日志文件发送到syslog而不是默认的/var/spool/exim/log目录。详见https://exim.org/exim-html-4.96/doc/html/spec_html/ch-log_files.html。
大量的信息也可以在Exim Wiki上找到。
配置 Exim
配置文件
/etc/exim.conf 和 /etc/aliases
配置信息
查看文件/etc/exim.conf,并修改任何设置以满足您的需要。注意,默认配置假设/var/mail目录是全球可写的,但设置了sticky位。如果你想使用默认配置,使用root用户发出命令:
chmod -v a+wt /var/mail
默认值(只有注释)如果在您的系统中不存在/etc/aliases文件,则在安装包期间安装该文件。使用以下命令创建必要的别名并启动Exim守护进程:
cat >> /etc/aliases << "EOF"
postmaster: root
MAILER-DAEMON: root
EOF
/usr/sbin/exim -bd -q15m
注意
为了保护现有的/etc/aliases文件,上面的命令会将这些别名附加到该文件中。应该检查该文件,并删除重复的别名(如果存在)。
/usr/sbin/exim -bd -q15m命令以15分钟的间隔启动exim守护进程来处理邮件队列。调整此参数以满足您的需求。
Linux PAM 配置
如果您已经使用Linux PAM支持构建了Exim,那么您需要创建一个PAM配置文件,以使其与BLFS一起正确工作。
以root用户发出以下命令,创建Linux PAM的配置文件:
cat > /etc/pam.d/exim << "EOF"
# Begin /etc/pam.d/exim
auth include system-auth
account include system-account
session include system-session
# End /etc/pam.d/exim
EOF
Systemd Unit
要在引导时自动启动exim,请安装blfs-systemd-units-20220720包中的exim.service单元:
make install-exim
内容
安装程序: exicyclog, exigrep, exim, exim-4.96-2, exim_checkaccess, exim_dbmbuild, exim_dumpdb, exim_fixdb, exim_lock, exim_tidydb, eximstats, exinext, exipick, exiqgrep, exiqsumm, exiwhat, 和 optionally, eximon, eximon.bin, 和 sendmail (符号链接)
安装库: None
安装目录: /usr/share/doc/exim-4.96 和 /var/spool/exim
简短描述
exicyclog cycles Exim 日志文件。
exigrep 搜索Exim日志文件。
exim 是到exim-4.96-2 MTA守护进程的符号链接。
exim-4.96-2 是Exim邮件传输代理守护进程。
exim_checkaccess 声明来自给定主机的给定收件人地址是否可接受。
exim_dbmbuild 创建和重建Exim数据库。
exim_dumpdb 将Exim数据库的内容写入标准输出。
exim_fixdb 修改Exim数据库中的数据。
exim_lock 锁定邮箱文件。
exim_tidydb 从Exim数据库中删除旧记录。
eximstats 从Exim日志文件生成邮件统计信息。
exinext 查询远端主机重试次数。
exipick 根据各种标准选择消息。
exiqgrep 是用于选择队列列表的实用程序。
exiqsumm 生成邮件队列中邮件的摘要。
exiwhat 查询正在运行的Exim进程。
eximon eximon.bin的启动shell脚本,用于在运行程序之前设置所需的环境变量。
eximon.bin 是一个监视器程序,它在X窗口中显示当前信息,还包含一个指向Exim命令行管理选项的菜单界面。
21.3 Postfix-3.7.4
简介Postfix
Postfix包包含一个邮件传输代理(MTA)。这对于向主机的其他用户发送电子邮件很有用。也可以将它配置为域的中央邮件服务器、邮件中继代理或仅仅是到本地Internet服务提供商的邮件传递代理。
已知此包可以使用LFS 11.3平台进行构建并正常工作。
包信息
-
下载 (HTTP): https://ghostarchive.org/postfix/postfix-release/official/postfix-3.7.4.tar.gz
-
下载 (FTP): ftp://ftp.porcupine.org/mirrors/postfix-release/official/postfix-3.7.4.tar.gz
-
下载 MD5 校验和: 2442d1e53d58e61842d99fb5978fec4a
-
下载大小: 4.6 MB
-
预计所需磁盘空间: 148 MB
-
预计构建时间: 0.2 SBU (使用并行数=4)
Postfix 依赖
推荐
Berkeley DB-5.3.28, Cyrus SASL-2.1.28, 和 libnsl-2.0.0
可选
ICU-72.1 支持电子邮件地址国际化(SMTPUTF8), MariaDB-10.6.12 或 MySQL, OpenLDAP-2.6.4, PCRE-8.45, PostgreSQL-15.2, SQLite-3.40.1, 和 CDB 或 TinyCDB
请注意,SQLite, MySQL, PostgreSQL和CDB只有在已知需要时才有用。
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/postfix
安装Postfix
添加用户和组
在编译程序之前,需要创建在安装过程中需要的用户和组。使用root用户发出的以下命令添加用户和组:
groupadd -g 32 postfix &&
groupadd -g 33 postdrop &&
useradd -c "Postfix Daemon User" -d /var/spool/postfix -g postfix \
-s /bin/false -u 32 postfix &&
chown -v postfix:postfix /var/mail
配置构建
README文件被格式化为可以使用诸如Less或More之类的分页器读取。如果您想使用文本编辑器,请使用以下sed来使它们清晰:
sed -i 's/.\x08//g' README_FILES/*
Makefile查看正在运行的内核,以决定如何设置各种东西。它不能识别Linux-6,也不能做出定义。修复后,构建在头文件中引用新定义的版本,这也会破坏构建。使用以下命令修复这两个问题:
sed -i 's/Linux..345/&6/' makedefs &&
sed -i 's/LINUX2/LINUX6/' src/util/sys_defs.h
Postfix源树不包含configure脚本,而顶层目录中的makefile包含一个makefiles目标,它会重新生成构建树中的所有其他makefiles。如果希望使用其他软件,如虚拟用户的数据库后端或TLS/SSL身份验证,则需要使用下面列出的一个或多个适当的CCARGS和AUXLIBS设置重新生成makefile。
注意
对于CCARGS的所有变体,您应该确保指定了-DNO_NIS,以便构建不会尝试访问BLFS中不存在的rpcsvc头。
要了解更多细节,请阅读readme文件。
Cyrus-SASL
要使用带有后缀的Cyrus-SASL,请使用以下参数:
CCARGS='-DNO_NIS -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl'
AUXLIBS='-lsasl2'
OpenLDAP
要使用带后缀的OpenLDAP,请使用以下参数:
CCARGS='-DNO_NIS -DHAS_LDAP'
AUXLIBS='-lldap -llber'
Sqlite
要使用带有后缀的Sqlite,请使用以下参数:
CCARGS='-DNO_NIS -DHAS_SQLITE'
AUXLIBS='-lsqlite3 -lpthread'
MySQL
使用Postfix使用MySQL,使用以下参数:
CCARGS='-DNO_NIS -DHAS_MYSQL -I/usr/include/mysql'
AUXLIBS='-lmysqlclient -lz -lm'
PostgreSQL
要使用PostgreSQL的后缀,使用以下参数:
CCARGS='-DNO_NIS -DHAS_PGSQL -I/usr/include/postgresql'
AUXLIBS='-lpq -lz -lm'
CDB/TinyCDB
要使用带有后缀的CDB或TinyCDB,请使用以下参数:
CCARGS='-DNO_NIS -DHAS_CDB'
AUXLIBS='</path/to/CDB>/libcdb.a'
StartTLS 验证
要使用带后缀的OpenSSL,请使用以下参数:
CCARGS='-DNO_NIS -DUSE_TLS -I/usr/include/openssl/'
AUXLIBS='-lssl -lcrypto'
安装 Postfix
根据您的需要调整以下内容。以Cyrus SASL为例,安装Postfix的命令如下:
make CCARGS="-DNO_NIS -DUSE_TLS -I/usr/include/openssl/ \
-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl" \
AUXLIBS="-lssl -lcrypto -lsasl2" \
makefiles &&
make
这个包没有附带一个有用的测试套件。
现在,作为root用户:
sh postfix-install -non-interactive \
daemon_directory=/usr/lib/postfix \
manpage_directory=/usr/share/man \
html_directory=/usr/share/doc/postfix-3.7.4/html \
readme_directory=/usr/share/doc/postfix-3.7.4/readme
命令解释
make makefiles: 该命令在整个源代码树中重新构建makefile文件,以使用CCARGS和AUXLIBS变量中包含的选项。
sh postfix-install -non-interactive: 这样可以防止安装脚本询问任何问题,从而除了少数情况外,在所有情况下都接受默认目标目录。如果没有设置html_directory和readme_directory选项,那么文档将不会被安装。
CCARGS="-DNO_EAI ...": 这将关闭SMTPUTF8支持,例如,如果您的电子邮件地址基础结构的其余部分不能处理UTF-8电子邮件地址和消息头值。
配置 Postfix
配置文件
/etc/aliases, /etc/postfix/main.cf, 和 /etc/postfix/master.cf
配置信息
创建(或追加到现有的)/etc/aliases,命令如下。将<LOGIN>更改为您的非root登录身份,以便发送给root的邮件可以转发给您。作为root用户:
cat >> /etc/aliases << "EOF"
# Begin /etc/aliases
MAILER-DAEMON: postmaster
postmaster: root
root: <LOGIN>
# End /etc/aliases
EOF
为了保护一个已经存在的/etc/aliases文件,上面的命令会在它存在的情况下附加这些别名。应该检查该文件,并删除重复的别名(如果存在)。
注意
/etc/postfix/main.cf和/etc/postfix/master.cf文件必须针对您的系统进行个性化设置。main.cf文件需要完全限定的主机名。你会发现main.cf是自我记录的,所以把它加载到你的编辑器中,根据你的情况进行修改。
注意
Postfix也可以设置为在chroot jail中运行。有关详细信息,请参阅源代码examples/chroot-setup/LINUX2中的文件。
如果已有配置,可以运行postfix实用程序向现有文件添加任何必要的定义。作为root用户:
/usr/sbin/postfix upgrade-configuration
在启动Postfix之前,您应该检查您的配置和文件权限是否正常工作。以root用户运行以下命令检查并启动Postfix服务器:
/usr/sbin/postfix check &&
/usr/sbin/postfix start
Systemd Unit
要在启动时自动运行Postfix,请安装blfs-systemd-units-20220720包中的postfix.service单元:
make install-postfix
内容
安装程序: mailq (符号链接), newaliases (符号链接), postalias, postcat, postconf, postdrop, postfix, postkick, postlock, postlog, postmap, postmulti, postqueue, postsuper, 和 sendmail
安装库: None
安装目录: /{etc,usr/lib}/postfix, /usr/share/doc/postfix-3.7.4 和 /var/{lib,spool}/postfix
简短描述
mailq 到sendmail的符号链接。
newaliases 到sendmail的符号链接。
postalias 是Postfix别名数据库维护的实用程序。
postcat 以人类可读的格式打印Postfix队列中的文件内容。
postconf 显示或修改后缀配置参数的值。
postdrop 在邮件投递目录中创建一个文件,并将其标准输入复制到该文件中。
postfix 是后缀控制程序。
postkick 通过本地传输通道向指定服务发送请求。
postlock 锁定一个邮件文件夹以供独占使用,并执行传递给它的命令。
postlog 一个与postfix兼容的日志接口,用于shell脚本等。
postmap 创建或查询一个或多个后缀查找表,或更新现有的查找表。
postmulti 是Postfix多实例管理器。它允许系统管理员在单个主机上管理多个Postfix实例。
postqueue 用于队列管理的Postfix用户界面。
postsuper 用于超级用户队列管理的Postfix用户界面。
sendmail 是Postfix to Sendmail兼容性接口。
21.4 sendmail-8.17.1
简介sendmail
sendmail包包含邮件传输代理(MTA)。
已知此包可以使用LFS 11.3平台进行构建并正常工作。
包信息
-
下载 (FTP): ftp://ftp.sendmail.org/pub/sendmail/sendmail.8.17.1.tar.gz
-
下载 MD5 校验和: cd3c3f7b2db60c362f07eecbebd99bf4
-
下载大小: 2.2 MB
-
预计所需磁盘空间: 20 MB
-
预计构建时间: 0.2 SBU
sendmail 依赖
必要
OpenLDAP-2.6.4 (客户端)
推荐
可选
ghostscript-10.00.0 (用于创建PDF文档), Procmail-3.22 (下面建议的配置要求在运行时存在procmail), 和 nph
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/sendmail
安装sendmail
在构建sendmail之前,以root用户的身份使用以下命令创建所需的用户、组和目录:
groupadd -g 26 smmsp &&
useradd -c "Sendmail Daemon" -g smmsp -d /dev/null \
-s /bin/false -u 26 smmsp &&
chmod -v 1777 /var/mail &&
install -v -m700 -d /var/spool/mqueue
注意
有关将可选包链接到构建中的信息,请参阅源树sendmail/README文件。使用下面的示例作为起点,它添加了对SASL、StartTLS (OpenSSL)和OpenLDAP的支持。当然,修改它以满足您的特殊需求。
cat >> devtools/Site/site.config.m4 << "EOF"
APPENDDEF(`confENVDEF',`-DSTARTTLS -DSASL -DLDAPMAP -DHASFLOCK')
APPENDDEF(`confLIBS', `-lssl -lcrypto -lsasl2 -lldap -llber -ldb')
APPENDDEF(`confINCDIRS', `-I/usr/include/sasl')
EOF
使用以下命令安装sendmail:
cat >> devtools/Site/site.config.m4 << "EOF"
define(`confMANGRP',`root')
define(`confMANOWN',`root')
define(`confSBINGRP',`root')
define(`confUBINGRP',`root')
define(`confUBINOWN',`root')
EOF
sed -i 's|/usr/man/man|/usr/share/man/man|' \
devtools/OS/Linux &&
cd sendmail &&
sh Build &&
cd ../cf/cf &&
cp generic-linux.mc sendmail.mc &&
sh Build sendmail.cf
这个包没有附带测试套件。
现在,作为root用户:
install -v -d -m755 /etc/mail &&
sh Build install-cf &&
cd ../.. &&
sh Build install &&
install -v -m644 cf/cf/{submit,sendmail}.mc /etc/mail &&
cp -v -R cf/* /etc/mail &&
install -v -m755 -d /usr/share/doc/sendmail-8.17.1/{cf,sendmail} &&
install -v -m644 CACerts FAQ KNOWNBUGS LICENSE PGPKEYS README RELEASE_NOTES \
/usr/share/doc/sendmail-8.17.1 &&
install -v -m644 sendmail/{README,SECURITY,TRACEFLAGS,TUNING} \
/usr/share/doc/sendmail-8.17.1/sendmail &&
install -v -m644 cf/README /usr/share/doc/sendmail-8.17.1/cf &&
for manpage in sendmail editmap mailstats makemap praliases smrsh
do
install -v -m644 $manpage/$manpage.8 /usr/share/man/man8
done &&
install -v -m644 sendmail/aliases.5 /usr/share/man/man5 &&
install -v -m644 sendmail/mailq.1 /usr/share/man/man1 &&
install -v -m644 sendmail/newaliases.1 /usr/share/man/man1 &&
install -v -m644 vacation/vacation.1 /usr/share/man/man1
使用以下命令安装sendmail安装与操作指南:
注意
如果您没有安装Ghostscript,请从下面的make和install命令中删除op.pdf。
cd doc/op &&
sed -i 's/groff/GROFF_NO_SGR=1 groff/' Makefile &&
make op.txt op.pdf
现在,作为root用户:
install -v -d -m755 /usr/share/doc/sendmail-8.17.1 &&
install -v -m644 op.ps op.txt op.pdf /usr/share/doc/sendmail-8.17.1 &&
cd ../..
命令解释
cat > devtools/Site/site.config.m4 « “EOF”: 这将创建一个配置文件,更改一些默认设置。
sed … devtools/OS/Linux: site.config.m4不支持对man目录的更改,因此在操作系统定义中修复它。
sh Build; sh Build sendmail.cf; sh Build install-cf; sh Build install: sendmail使用基于m4的构建脚本来创建各种Makefile。这些命令构建和安装包。
for manpage in…;do…;done; install …: 手册页已经格式化安装,man显示它们有些乱码。这些命令将格式化的页面替换为man可以正确显示的页面。
配置 sendmail
配置文件
/etc/mail/*
配置信息
注意
在继续之前,请确保您的系统在/etc/hosts中定义了一个完全合格的域名。
以root用户使用以下命令创建/etc/mail/local-host-names和/etc/mail/aliases文件:
echo $(hostname) > /etc/mail/local-host-names
cat > /etc/mail/aliases << "EOF"
postmaster: root
MAILER-DAEMON: root
EOF
newaliases
Sendmail的主配置文件/etc/mail/sendmail.cf很复杂,不能直接编辑。建议修改的方法是修改/etc/mail/sendmail.mc和各种m4文件,然后从/etc/mail中运行m4宏处理器,如下所示:
cd /etc/mail &&
m4 m4/cf.m4 sendmail.mc > sendmail.cf
要修改的文件的完整说明,以及可用的参数可以在/etc/mail/README中找到。
Systemd Unit
要在启动时自动运行sendmail,请安装blfs-systemd-units-20220720包中的sendmail.service单元:
make install-sendmail
注意
sendmail的-qNm选项,其中N是分钟数,控制sendmail处理邮件队列的频率。systemd单元默认设置为5分钟。个人工作站用户可能希望将其设置为低至1分钟,处理更多邮件的大型安装可能希望将其设置得更高。
内容
安装程序: editmap, mailstats, makemap, praliases, sendmail, smrsh, 和 vacation; 符号链接到 /usr/sbin/sendmail: hoststat, mailq, newaliases, 和 purgestat
安装库: None
安装目录: /etc/mail, /usr/share/doc/sendmail-8.17.1, 和 /var/spool/clientmqueue
简短描述
editmap 查询和编辑sendmail映射文件。
hoststat 打印sendmail的持久主机状态。
mailstats 显示sendmail统计信息。
mailq 打印等待发送的出站邮件的摘要。
makemap 创建sendmail映射文件。
newaliases 从/etc/mail/aliases的内容重建/etc/mail/aliases.db。
praliases 显示当前的sendmail别名。
purgestat 导致sendmail清除(purge)其所有主机状态信息。
sendmail 是sendmail邮件传输代理。
smrsh 是用于发送邮件的受限shell。
vacation 是一个电子邮件自动回复器。