Linux完整邮件系统(zmail)postfix+dovecot+mysql+roundcubemail+clamav+amavisd-new
作者:互联网
邮件系统的组成
Postfix的角色
在整个邮件系统中,
Postfix担任MTA的角色,负责在服务器之间传递邮件,并收下其他系统寄到本地系统的邮件。它不处理任何POP或IMAP通信内容。当作为MTA时,Postfix使用SMTP协议通过网络收发E-mail信息;当作为本地信使时,则是直接将邮件分送到邮箱,或是交由特殊的MDA处理。
投递操作
依据收件地址的类型,来判断是否要收下邮件以及如何进行投递操作。主要的地址类型有本地(local)、
虚拟别名(virtaul alias)、虚拟邮箱(virtual mailbox )以及转发(relay)
。如果收件地址不在这四种主要类型之中,则邮件会被交给SMTP
client,通过网络寄送出去(假设原信是来自有资格使用转发服务的客户端);否则,便依据地址的类型,选择适当的MDA来投递邮件。
其他传送代理程序
Postfix还提供了其他MDA
,可用来处理特殊的地址或目的地。这些MDA需要在master.cf配置文件中设定妥当之后才有作用。最常用两个特殊MDA是lmtp和pipe。
设定MTA的标识
myhostname 如果你没指定,Postfix查询主机系统hostname;
mydomain 如果没指定,会根据myhostname推断出;
myorigin
当用户通过Postfix系统发出邮件,但是其信封与标头里的邮件地址都没注明网域名称时,
会自动使用myorigin参数定义的网域名称来补齐缺少的信息。默认为myhostname值。通常设为$mydomain比较好。
mydestination
参数列出了Postfix应该将其视为“本地网域”的所有网域名称。默认情况下,只会收下送给$myhostname和localhost.$mydomain的邮件。
转发控制
mynetwork_style和mynetwork这两个参数决定客户端必须具备怎样的资格,才可以通过Postfix来寄出邮件。mynetwork参数的效力高于mynetwork_style。默认配置仅容许相同IP子网络上的其他主机使用转发服务。
邮箱投递操作
mail_spool_directory = /usr/local/zmail/mailbox
表示Postfix应该使用mbox格式投递;
mail_spool_directory = /usr/local/zmail/mailbox/
表示Postfix应该使用maildir格式投递;
Postfix和SASL(如果使用database存储用户名密码,可跳过此节)
1.如果你打算让SASL使用Linux系统密码,你必须启动Cyrus SASL包随附的saslauthd
daemon。(Postfix被刻意设计成避开特权身份,所以不能直接访问系统密码文件。Cyrus函数库对于这个问题的解决办法,是提供一个特殊的验证服务器程序,称为saslauthd
daemon,它能够代替来取得密码数)请注意,使用saslauthd来访问Linux系统密码,表示你只能使用明文密码,因为saslauthd需要实际密码才能进行核验。配置/etc/sasl2/smtpd.conf:
pwcheck_method: saslauthd
mech_list: plain login
然后启动saslauthd #saslauthd -a pam。
2.使用SASL专用密码(/etc/sasldb2)则无需saslauthd
daemon,配置/etc/sasl2/smtpd.conf:
pwcheck_method: auxprop(Auxiliary Property
Plug-ins,其作用是使用外部程来进行验证。默认的辅助外挂模块是sasldb)
mech_list: plain login
使用命令saslpasswd2创建用户:
$ sudo saslpasswd2 -c -u `postconf -h myhostname` zhou
然后修改/usr/local/zmail/config/main.cf:
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions =
permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
Postfix和TLS
1.制作证书:
$ sudo openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:2048 -out ca.key
$ sudo openssl req -new -key ca.key -out ca.csr
$ sudo openssl x509 -req -in ca.csr -out ca.pem -signkey ca.key -days 36500
-sha256
$ sudo openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:2048 -out
server.key
$ sudo openssl req -new -key server.key -out server.csr
$ sudo openssl x509 -req -in server.csr -CA ca.pem -CAkey ca.key -out
server.pem -CAcreateserial -days 36500 -sha256
2.修改/usr/local/zmail/config/main.cf:
#控制从其他MTA接收邮件和从MUA接收SMTP请求
smtpd_use_tls = yes
smtpd_enforce_tls = no
smtpd_tls_CAfile = /usr/local/zmail/config/tls/ca.pem
smtpd_tls_cert_file = /usr/local/zmail/config/tls/server.pem
smtpd_tls_key_file = /usr/local/zmail/config/tls/server.key
#控制转发邮件到其他MTA
smtp_use_tls = yes
smtp_enforce_tls = no
smtp_tls_enforce_peername = no
smtp_tls_CAfile = /usr/local/zmail/config/certs/ca.pem
smtp_tls_cert_file = /usr/local/zmail/config/certs/server.pem
smtp_tls_key_file = /usr/local/zmail/config/certs/server.key
smtp_tls_CApath = /etc/pki/ca-trust/extracted/pem
安装
我们以源码方式安装,便于控制自己想要的版本,所有软件都安装在/usr/local/zmail/目录下.当然可以用yum方式安装,这里不详述.
1.yum安装必要的package:
$ sudo yum -y install glibc-headers gcc-c++ krb5-devel krb5-libs libc-client
libc-client-devel gd gd2 gd-devel gd2-devel zlib freetype libicu icu
libicu-devel openssl openssl-devel cyrus-sasl cyrus-sasl-devel cyrus-sasl-plain
libidn libidn-devel m4 uw-imap-devel-2007f-16.el7 net-tools
2.下载mysql二进制包文件并解压到到/usr/local/zmail/mysql 然后启动mysql:
$sudo /usr/local/zmail/mysql/bin/mysqld --daemonize
–defaults-file=/usr/local/zmail/mysql/config/my.cnf
下载界面截图:
3.下载php源码包文件并解压到php目录,然后:
$ cd php
$ sudo ./configure --prefix=/usr/local/zmail/php --enable-fpm --with-mysqli
–with-pdo-mysql --with-openssl=/usr/local/zmail/openssl --enable-mbstring
–with-imap --with-kerberos --with-imap-ssl --with-gd --enable-intl
–enable-exif --with-ldap
$ sudo make & make install
4.下载postfix源码包文件并解压到postfix,然后:
$ cd postfix
$ sudo export install_dir=/usr/local/zmail/postfix
$ sudo make makefiles CCARGS="-DUSE_SASL_AUTH -DHAS_MYSQL
-I/usr/local/zmail/mysql/include -DUSE_TLS" AUXLIBS="-lssl -lcrypto"
AUXLIBS_MYSQL=’-L/usr/local/zmail/mysql/lib -lmysqlclient -lz -lm’
dynamicmaps=yes shlib_directory="$install_dir/lib"
meta_directory="$install_dir/config" config_directory="$install_dir/config"
command_directory="$install_dir/sbin" daemon_directory="$install_dir/libexec"
data_directory="$install_dir/data" queue_directory="$install_dir/spool"
$ sudo make & sudo make install
5.下载dovecot源码包文件并解压到dovecot,然后:
$ cd dovecot
$ sudo ./configure --prefix=/usr/local/zmail/dovecot
–with-ssldir=/usr/local/zmail/dovecot/ssl --with-mysql --with-ldap
–with-gssapi
$ sudo make & sudo make install
6.下载nginx源码包文件并解压到nginx,然后:
$ cd nginx
$ sudo ./configure --prefix=/usr/local/zmail/nginx --with-http_ssl_module
–with-http_realip_module --with-http_gunzip_module --with-http_ssl_module
–with-pcre
$ sudo make & sudo make install
7.下载roundcubemail源码包文件并解压到roundcubemail目录,然后:
$ mysql>create database roundcubemail;
Mysql> grant all privileges on roundcubemail.* to roundcube@localhost
identified by ‘password’;
/*Mysql> use roundcubemail;
Mysql>delimiter //
Mysql>CREATE FUNCTION update_passwd (cryptpass text, user text) RETURNS text
MODIFIES SQL DATA BEGIN DECLARE error text; UPDATE zmail.mailbox SET
password=cryptpass WHERE username=user; return error; end//
Plugins:
Modify /usr/local/zmail/roundcubemail/config/config.ini.php:
$config[‘plugins’] = array(
‘archive’,
‘zipdownload’,
‘password’,
);
Modify /usr/local/zmail/roundcube/plugins/password/config.ini.php to use driver
sql.
*/
8.下载amavisd-new二进制包文件并解压到amavisd-new即可.
9.下载clamav源码包文件并解压缩到clamav目录,然后:
$ cd clamav
$ sudo ./configure --prefix=/usr/local/zmail/clamav
$ sudo make & sudo make install
10.下载perl二进制包文件并解压到perl目录,然后:
$ sudo perl install Mail_Mime Net_SMTP Net_Socket Net_IDNA Auth_SASL Net_Sieve
Crypt_GPG Net_LDAP2
$ sudo find ./ -name ‘*.pl’ | xargs sed -i
‘s@#!/usr/bin/perl@#!/usr/local/zmail/perl/bin/perl@’
Error:
Unescaped left brace in regex is deprecated here (and will be fatal in Perl
5.30), passed through in regex;
Perl 5.26后不支持regex表达式中直接使用大括号{},需要加转移符\,如\{ \}。
配置
详见下面的ZMAIL.
ZMAIL
我们开发了一个全功能的邮件集成系统ZMAIL,免费哦. 详情点击这里http://www.niuer.tech:1717/docs/. 里面包含了所有组件及配置文件,既可用作企业邮箱,也可用于学习如何搭建全功能企业邮件系统.
标签:install,amavisd,postfix,config,sudo,usr,邮件系统,zmail,local 来源: https://blog.csdn.net/qq_21101283/article/details/101447036