在Ubuntu 14.04上通过LDAP和MySQL查找支持从源代码编译并安装Exim

时间:2020-03-21 11:42:52  来源:igfitidea点击:

我们会将现有的Exim 4.72安装从Debian Squeeze移至Ubuntu 14.04(Ubuntu 14.04随Exim 4.82一起提供)。

从Exim 4.77开始,默认情况下match_ *不再在右侧扩展。
但是,Exim提供了一个新的编译时构建选项EXPAND_LISTMATCH_RHS。

EXPAND_LISTMATCH_RHS是我们要从源代码进行编译的原因之一。

请注意,本文不介绍Exim服务配置。
如果需要配置Exim,可以通过修改/etc/exim4/exim4.conf文件来完成。

预先设定

从存储库安装Exim。
这将创建一个Debian-exim用户和组。

$sudo apt-get install --no-install-recommends exim4-daemon-heavy

同时复制以下文件。
我们稍后将需要它们:

$cp /etc/init.d/exim4 ~/exim4.init
$cp /etc/default/exim4 ~/exim4.default

清除进出口:

$sudo dpkg -P exim4-base exim4-daemon-heavy exim4-config

来源检验

安装dpkg-dev,checkinstall和pkg-config:

$sudo apt-get install dpkg-dev checkinstall pkg-config

获取Exim的源代码:

$mkdir ./exim-src && cd ./exim-src
$apt-get source exim4

安装构建依赖项:

$sudo apt-get build-dep exim4

配置Exim构建选项

根据需要配置构建选项:

$cd ./exim4*
$cp ./src/EDITME ./Local/Makefile
$vim ./Local/Makefile

下面提供了示例配置:

$grep -ve "^#" -ve "^$" ./Local/Makefile
BIN_DIRECTORY=/usr/sbin
CONFIGURE_FILE=/etc/exim4/exim4.conf
EXIM_USER=Debian-exim
EXIM_GROUP=Debian-exim
SPOOL_DIRECTORY=/var/spool/exim
ROUTER_ACCEPT=yes
ROUTER_DNSLOOKUP=yes
ROUTER_IPLITERAL=yes
ROUTER_MANUALROUTE=yes
ROUTER_QUERYPROGRAM=yes
ROUTER_REDIRECT=yes
ROUTER_IPLOOKUP=yes
TRANSPORT_APPENDFILE=yes
TRANSPORT_AUTOREPLY=yes
TRANSPORT_PIPE=yes
TRANSPORT_SMTP=yes
TRANSPORT_LMTP=yes
SUPPORT_MAILDIR=yes
SUPPORT_MAILSTORE=yes
SUPPORT_MBX=yes
LOOKUP_DBM=yes
LOOKUP_LSEARCH=yes
LOOKUP_DNSDB=yes
LOOKUP_CDB=yes
LOOKUP_DSEARCH=yes
LOOKUP_LDAP=yes
LOOKUP_MYSQL=yes
LOOKUP_NIS=yes
LOOKUP_NISPLUS=yes
LOOKUP_PASSWD=yes
LOOKUP_SQLITE=yes
LOOKUP_SQLITE_PC=sqlite3
LOOKUP_WILDLSEARCH=yes
LOOKUP_NWILDLSEARCH=yes
LDAP_LIB_TYPE=OPENLDAP2
PCRE_CONFIG=yes
LOOKUP_INCLUDE=-I /usr/local/ldap/include -I /usr/include/mysql
LOOKUP_LIBS=-L/usr/local/lib -lldap -llber -lmysqlclient -lpq -lsqlite3 -lm -ldl -lpam
WITH_CONTENT_SCAN=yes
WITH_OLD_DEMIME=yes
FIXED_NEVER_USERS=root
AUTH_CRAM_MD5=yes
AUTH_DOVECOT=yes
AUTH_PLAINTEXT=yes
AUTH_SPA=yes
HEADERS_CHARSET="ISO-8859-1"
HAVE_ICONV=yes
DEFAULT_CRYPT=crypt16
SUPPORT_TLS=yes
USE_GNUTLS=yes
USE_GNUTLS_PC=gnutls
DLOPEN_LOCAL_SCAN=yes
LDFLAGS += -rdynamic
CFLAGS += -fvisibility=hidden
LOG_FILE_PATH=/var/log/exim4/%slog
SYSLOG_LOG_PID=yes
EXICYCLOG_MAX=10
COMPRESS_COMMAND=/usr/bin/gzip
COMPRESS_SUFFIX=gz
ZCAT_COMMAND=/usr/bin/zcat
EXPAND_DLFUNC=yes
SUPPORT_PAM=yes
NO_SYMLINK=yes
SYSTEM_ALIASES_FILE=/etc/aliases
HAVE_IPV6=yes
TMPDIR="/tmp"
MAKE_SHELL=/bin/sh
SUPPORT_MOVE_FROZEN_MESSAGES=yes
EXPAND_LISTMATCH_RHS=yes

(可选)如果需要Exim监视器,也可以对其进行配置:

$cp ./exim_monitor/EDITME ./Local/eximon.conf
$vim ./Local/eximon.conf

设置进出口目录

我们将需要以下目录:

$sudo mkdir -m 0755 /etc/exim4
$sudo mkdir -m 0750 /var/log/exim4
$sudo chown Debian-exim:Debian-exim /var/log/exim4
$sudo mkdir -m 0750 /var/spool/exim
$sudo chown Debian-exim:Debian-exim /var/spool/exim

编译源代码并安装Exim

编译源代码:

$make

构建一个.deb包:

$sudo checkinstall -D --install=no --pkgname exim4 --pkgrelease $(date +%F) \
--maintainer "[email protected]" --strip=no --stripso=no --addso=yes --nodoc

安装软件包:

$sudo dpkg -i ./exim4*deb

检查Exim版本和模块:

$exim -bV
Exim version 4.82 #3 built 24-Feb-2014 18:10:38
Copyright (c) University of Cambridge, 1995 - 2013
(c) The Exim Maintainers and contributors in ACKNOWLEDGMENTS file, 2007 - 2013
Berkeley DB: Berkeley DB 5.3.28: (September  9, 2013)
Support for: crypteq iconv() IPv6 PAM Expand_dlfunc GnuTLS move_frozen_messages Content_Scanning DKIM Old_Demime
Lookups (built-in): lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmjz dbmnz dnsdb dsearch ldap ldapdn ldapm mysql nis nis0 nisplus passwd sqlite
Authenticators: cram_md5 dovecot plaintext spa
Routers: accept dnslookup ipliteral iplookup manualroute queryprogram redirect
Transports: appendfile/maildir/mailstore/mbx autoreply lmtp pipe smtp
Fixed never_users: 0
Size of off_t: 8
Configuration file is /etc/exim4/exim4.conf

创建符号链接

从Exim文档中:

构建和安装Exim本身并不能将其广泛使用。
邮件用户代理用来调用系统消息传输代理的名称是'/usr/lib/sendmail'或者'/usr/sbin/sendmail'(取决于操作系统),因此必须这样做名称指向exim二进制文件,以便他们使用它。
通常,通过重命名任何现有文件并将"/usr/lib/sendmail"或者"/usr/sbin/sendmail"作为指向exim二进制文件的符号链接来完成此操作。

您可能需要以下符号链接:

$sudo ln -s /usr/sbin/exim /usr/sbin/sendmail
$sudo ln -s /usr/sbin/exim /usr/sbin/exim4
$sudo mkdir /usr/lib/exim4
$sudo ln -s /usr/sbin/exim /usr/lib/exim4/exim4

开始执行

现在,您可以通过发出以下命令来启动Exim:

$sudo /usr/sbin/exim4 -bd -q30m

复制以前保存的文件:

$sudo cp ~/exim4.init /etc/init.d/exim4
$sudo cp ~/exim4.default /etc/default/exim4

现在,您还可以通过以下方式启动Exim:

$sudo /etc/init.d/exim4 start