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

[外链图片转存失败(img-xpPKULXP-1569482911667)(media/2631f76334f8ff6a00f30d62839d65f6.png)]

安装

我们以源码方式安装,便于控制自己想要的版本,所有软件都安装在/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

下载界面截图:

[外链图片转存失败(img-jrqztgEa-1569482911670)(media/ea7bc4d6dae29325cbc5d02f2374f982.png)]

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/. 里面包含了所有组件及配置文件,既可用作企业邮箱,也可用于学习如何搭建全功能企业邮件系统.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值