龙蜥 Anolis Linux 23 源代码编译安装 Dovecot

作者:Sender Su  来源:原创内容  发布日期:2023-10-03  最后修改日期:2023-10-01

本篇是继上一篇:

经典有效的日志监控邮件集中巡检 Linux 服务器

的补充。

article banner

实话说,我已经依赖于发行版预编译软件包好久了,甚至最后一次运行 rpmbuild 都已经是几年前的事。

现在突然再来一次从源代码开始编译安装,看着屏幕上飞快滚动的编译过程输出,想起当年自己为了突破 AMD K6 2+ CPU 超频频率上限而修改 Linux Kernel 的相关单元然后反复编译、测试的过程,颇有故地重游之感。

话说 Dovecot 用了这么久,它网站我还真的是第一次上,Logo也是第一次看到:

Dovecot Logo

DOVECOT

The Secure IMAP server

言归正传。

1、下载安装

首先还是下载安装龙蜥 Anolis Linux 23 GA版。选择最小安装。安装过程过于简单不表。

Anolis Linux 23 GA Minimum Install

2、从源代码编译安装需要先安装编译环境
[root@anolis23 ~]# dnf install pam-devel openssl-devel autoconf automake gcc gcc-c++

编译环境需要安装 pam-devel 才能使 Dovecot 通过 libpam 进行用户身份校验。

同时,必须安装 openssl-devel 才能使 Dovecot 支持加密连接。就现在的网络环境来说,必须要有SSL加密连接支持,传统的不加密POP3连接并不安全,要弃用。

3、源代码包处理

下载源代码包,解压,检查环境生成 Makefile:

[root@anolis23 ~]# wget https://dovecot.org/releases/2.3/dovecot-2.3.21.tar.gz
[root@anolis23 ~]# tar zxf dovecot-2.3.21.tar.gz
[root@anolis23 ~]# cd dovecot-2.3.21/
[root@anolis23 dovecot-2.3.21]# ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc --with-pam

需要给出的参数包括指定使用pam进行用户校验,以及定义 prefix、localstatedir 和 sysconfdir。要注意的是,这三个目录路径如果不专门给出定义而是按默认,也即这些位置都会基于 /usr/local/ 目录,那么 Dovecot 服务是运行不起来的。

因为 dovecot 服务需要用非 root 账号启动子进程,但 systemd 会拦截非root账号服务进程修改 /usr/local/ 位置之下的下级目录属性,导致 Dovecot 服务启动失败。

成功有效的环境检查过程,最后的输出应类似如下:

config.status: creating stamp.h
config.status: creating dovecot-config.in
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
config.status: executing libtool commands

Install prefix . : /usr
File offsets ... : 64bit
I/O polling .... : epoll
I/O notifys .... : inotify
SSL ............ : yes (OpenSSL)
GSSAPI ......... : no
passdbs ........ : static passwd passwd-file shadow checkpassword
                 : -pam -bsdauth -ldap -sql
userdbs ........ : static prefetch passwd passwd-file checkpassword
                 : -ldap -sql
CFLAGS ......... : -std=gnu99 -g -O2 -fstack-protector-strong -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -mfunction-return=keep -mindirect-branch=keep -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -fno-builtin-strftime -Wstrict-aliasing=2
SYSTEMD ........ : simple - /usr/lib/systemd/system/dovecot.service
SQL drivers .... :
                 : -pgsql -mysql -sqlite -cassandra
Full text search : squat
                 : -lucene -solr

可以注意以上输出中,Install prefix 设置为/usr。SSL 应显示为yes,如果是 no 则缺失了 OpenSSL 的开发包。

4、编译和安装

然后是编译和安装,耐心等待即可。

[root@anolis23 ~]# make ; make install

可以分开执行,观察 make 的执行结果。

5、安装后的配置

参考文档说明:

https://doc.dovecot.org/configuration_manual/quick_configuration/#quick-configuration

其中,可以通过执行 doveconf 命令:

doveconf -n | head -n 1

确认配置文件应放到哪里,按本文的编译配置应为 /etc/dovecot/ 。然后复制范例配置过去:

[root@anolis23 ~]# cp -r /usr/local/share/doc/dovecot/example-config/* /etc/dovecot/

然后添加专门给 Dovecot 服务用的账号 dovenull 和 dovecot,并作适当的账号设置:

[root@anolis23 ~]# adduser -u 500 dovenull
adduser warning: dovenull's uid 500 outside of the UID_MIN 1000 and UID_MAX 60000 range.
[root@anolis23 ~]# adduser -u 501 dovecot
adduser warning: dovecot's uid 501 outside of the UID_MIN 1000 and UID_MAX 60000 range.
[root@anolis23 ~]# groupmod --gid 500 dovenull
[root@anolis23 ~]# groupmod --gid 501 dovecot
[root@anolis23 ~]# usermod -d /usr/libexec/dovecot dovecot
[root@anolis23 ~]# usermod -d /usr/libexec/dovecot dovenull
[root@anolis23 ~]# usermod -s /sbin/nologin dovecot
[root@anolis23 ~]# usermod -s /sbin/nologin dovenull

为和普通用户区分,我把 UID 和 GID 都设置为小于默认的1000,忽略 adduser 给出的 warning 提示即可。

如果想把这两个账号设置到和发行版预设(比如龙蜥 Anolis Linux 8)一样,如下是参考:

dovecot:x:97:97:Dovecot IMAP server:/usr/libexec/dovecot:/sbin/nologin
dovenull:x:971:970:Dovecot's unauthorized user:/usr/libexec/dovecot:/sbin/nologin

最后是设置pam如何支持dovecot校验用户身份,方法是创建这个配置文件:

/etc/pam.d/dovecot

其内容为:

#%PAM-1.0
auth       required     pam_nologin.so
auth       include      password-auth
account    include      password-auth
session    include      password-auth

这个文件的属性应符合如下设置:

[root@anolis23 pam.d]# ll -Z dovecot
-rw-r--r--. 1 root root system_u:object_r:etc_t:s0 164 Sep 29 23:27 dovecot
6、创建加密证书

本来剩下的配置过程和上一篇是一样的,但由于版本23的环境设置稍有不同,加密证书的创建脚本要先切换到脚本所在位置再运行,所以就列一下。

首先是看自己需要,修改证书设置配置文件:

/usr/share/doc/dovecot/dovecot-openssl.cnf

设置SSL证书的信息。

然后检查证书的目的目录是否已经存在,没有就手工创建:

[root@anolis23 ~]# mkdir /etc/pki/private
[root@anolis23 ~]# chmod 700 /etc/pki/private/
[root@anolis23 ~]# ln -s /etc/pki/private/ /etc/ssl/private
[root@anolis23 ~]# ll /etc/ssl
total 4
-rw-r--r--. 1 root root 1167 Apr 13 17:02 README
lrwxrwxrwx. 1 root root   47 Apr 13 17:04 cert.pem -> ../pki/ca-trust/extracted/pem/tls-ca-bundle.pem
lrwxrwxrwx. 1 root root   44 Apr 13 17:04 certs -> ../pki/ca-trust/extracted/pem/directory-hash
lrwxrwxrwx. 1 root root   26 Apr 13 17:04 ct_log_list.cnf -> ../pki/tls/ct_log_list.cnf
lrwxrwxrwx. 1 root root   22 Apr 13 17:04 openssl.cnf -> ../pki/tls/openssl.cnf
lrwxrwxrwx. 1 root root   17 Sep 27 11:44 private -> /etc/pki/private/

再然后运行脚本生成证书:

[root@anolis23 ~]# cd /usr/share/doc/dovecot/
[root@anolis23 dovecot]# bash mkcert.sh
..+........+...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.+...+......+............+...+......+.+...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*......+....+..+...+.+...........+......................+..+...+...+....+.........+......+.........+......+.....+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
........+...+....+......+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.....+......+......+.+..+......+....+..+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*............+..+............+.+......+.....+......+..........+..+.............+........+......+......+.......+..+.........+.......+.....+.............+..+.......+..+...+.......+......+...+.........+.....+............+.....................+...+.+.....+.+..............+.+...+......+...+......+..+....+........+...+....+...+..+..................+.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-----

subject=OU = IMAP server, CN = imap.example.com, emailAddress = postmaster@example.com
SHA1 Fingerprint=41:1B:EC:68:28:2E:DD:A3:5B:67:28:C4:4F:1F:0D:09:ED:B9:B9:8E
[root@anolis23 dovecot]# ll /etc/ssl/private/
total 3
-rw-------. 1 root root 1704 Sep 27 12:03 dovecot.pem

运行完检查一下应该已经正常生成。

7、其他配置

后面的配置过程和我上一篇文章是一样的,就不重复了:

经典有效的日志监控邮件集中巡检 Linux 服务器

要说区别的话,就是由于示范配置内容基本上都是注释起来按默认。如果对默认不放心,可以参照龙蜥 Anolis Linux 8.x 版本的配置文件,把在示范配置中被注释了的设置项目取消注释,明示之。

8、关于源代码安装的一些其他操作

如果在安装自己编译的 Dovecot 后要卸载,在源代码解压的目录内运行

make uninstall

即可实现卸载。

如果要重新编译(包括重新检测配置),要在源代码解压的目录内先运行

make clean

进行清理。

最后还是要说说学习。学习我只推崇看书。什么视频、网课都是浪费时间。如果自己没有足够的能力把零碎的知识片段拼凑起来,那么还是认认真真买本书读透了再说。

本栏目相关
  •  2010-01-25 Linux 下的分区调整工具GParted实战
  •  2020-02-27 服务器热加硬盘、热转RAID模式,配合LINUX卷操作实现不重启服务器完成扩容
  •  2022-02-24 如何安装使用 Broadcom RAID卡命令行管理工具 StorCLI(或称PercCLI)?
  •  2022-02-25 Linux 软路由网络吞吐优化设置
  •  2022-12-12 Linux Kernel 日志排错分析和处置三例
  •  2023-02-01 安装MegaRAID存储管理器17.05.06版的好一番折腾(Linux篇)
  •  2023-02-08 Linux有什么工具能自动清理释放存储空间?
  •  2023-10-05 openEuler 安装配置 Dovecot 邮件服务器排障
  •  2023-06-25 Linux 单臂软路由设置及流量监控ntopng避坑
  • 本站微信订阅号:

    微信订阅号二维码

    本页网址二维码:

    本栏目热门内容
  • Acrobat虚拟PDF打印机执行打印时挂起,解决办法竟然...
  • LINKSYS交换机登录WEB界面显示不正确的解决方法
  • 又一次RAID 5阵列故障记录
  • 解决VMware vSphere ESXi 5.0 Update 1 中虚机不能...
  • 修改CentOS发行信息以绕过Dell服务器BIOS更新和DSET...
  • 解决虚拟化运行的 Windows Server 2003 标准版出现...
  • Windows Server 2008 重命名域和域控制器
  • Intel Nehalem CPU Errata 导致 VMWare ESXi(vSpher...
  • 一次很精神的电脑组装过程记录(但不是自己的电脑)...
  • 解决MySQL Cluster 备份总是失败,提示文件已存在的...
  • MegaCli安装及使用杂记
  • 解决WSUS显示客户端不全的问题
  • 解决 VMWare vSphere 6 客户端无法修改用户密码
  • 解决Windows Server 2008 R2域控制器显示无法连接到...
  • 本站服务器RAID 5阵列双硬盘失效挽救记录
  • 网站数据库从MySQL 5.0升级到5.6的记录
  • 解决MariaDB使用Percona XtraBackup增量备份出错
  • Linux 下的分区调整工具GParted实战
  • DELL PowerEdge 820 报CPU3 INTERNAL ERROR 的解决...
  • 修改arpwatch使通知邮件主题显示IP地址
  • 程序员漫画:如何用8种不同的编程语言去解救公主
  • 解决Samba WINS服务的错误解释问题
  • 解决很好用的多合一即时通信软件pidgin的崩溃问题
  • 使用 GParted 进行虚拟机硬盘分区调整操作
  • 解决Squid代理HTTP时在浏览器出现Content Encoding ...
  • 用Delphi编写使用到ADO的DLL的一些问题
  • 网站简单改版
  • 索尼系列手提电脑备份失败,出现700错误的解决办法
  • Dell R900服务器 BMC firmware incompatible with C...
  • 更多...