微信订阅号二维码

本页网址二维码:

本栏目热门内容
  • Acrobat虚拟PDF打印机执行...
  • LINKSYS交换机登录WEB界面...
  • 又一次RAID 5阵列故障记录...
  • 解决VMware vSphere ESXi ...
  • 修改CentOS发行信息以绕过...
  • 解决虚拟化运行的 Windows...
  • Windows Server 2008 重命...
  • Intel Nehalem CPU Errata...
  • 一次很精神的电脑组装过程...
  • 解决MySQL Cluster 备份总...
  • MegaCli安装及使用杂记
  • 解决WSUS显示客户端不全的...
  • 解决 VMWare vSphere 6 客...
  • 解决Windows Server 2008 ...
  • 本站服务器RAID 5阵列双硬...
  • 网站数据库从MySQL 5.0升...
  • 解决MariaDB使用Percona X...
  • Linux 下的分区调整工具GP...
  • DELL PowerEdge 820 报CPU...
  • 修改arpwatch使通知邮件主...
  • 程序员漫画:如何用8种不...
  • 解决很好用的多合一即时通...
  • 解决Samba WINS服务的错误...
  • 使用 GParted 进行虚拟机...
  • 解决Squid代理HTTP时在浏...
  • 用Delphi编写使用到ADO的D...
  • 网站简单改版
  • 索尼系列手提电脑备份失败...
  • Dell R900服务器 BMC firm...
  • 更多...

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

    作者:Sender  来源:本站  发布日期: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-06-25 Linux 单臂软路由设置及流量监控ntopng避坑
  •  2023-10-05 openEuler 安装配置 Dovecot 邮件服务器排障