备份换主机的时候直接覆盖配置文件。
需修改的文件:
\dovecot\dovecot-sql.conf.ext 填写数据库账号密码
\exim4\conf.d\main\00_exim4-config_custom
填写数据库账号密码
1.安装的软件
apt install exim4-daemon-heavy
apt-get install dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d
apt install spamassassin
##安装 webmail ,配置在 /etc/roundcube
apt install roundcube roundcube-plugins roundcube-plugins-extras
打开 端口 ufw allow 25,587,993
禁止25端口出站: ufw deny out 25
修改文件 /etc/exim4/conf.d/main/00_exim4-config_custom
# Reply to HELO/EHLO
primary_hostname = mail.bigoak.cn | bigoak.cn
1.禁用文件
cd /etc/exim4/conf.d/auth/
mv 30_exim4-config_examples 30_exim4-config_examples.disabled
3。创建虚拟用户
adduser --disabled-login vmail
4.创建 MySQL 表 库为email
CREATE TABLE IF NOT EXISTS `mod_exim4_alias` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`alias` varchar(255) NOT NULL DEFAULT '',
`destination` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
);
CREATE TABLE IF NOT EXISTS `mod_exim4_relays` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`domain` varchar(200) ,
PRIMARY KEY (`id`),
UNIQUE KEY `domain` (`domain`)
);
CREATE TABLE IF NOT EXISTS mod_exim4_mailboxes (
`id` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(128) NOT NULL DEFAULT '',
`password` varchar(128) NOT NULL DEFAULT '',
`maildir` varchar(128) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`)
);
CREATE TABLE IF NOT EXISTS `mod_exim4_domains` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`domain` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
);
5. DKIM
5.1 密钥生成
cd /etc/exim4
openssl genrsa -out exim-dkim.key 1024
openssl rsa -in exim-dkim.key -out exim-dkim.pub -pubout -outform PEM
5.2 添加dns txt 条目,把*** 换成公私,不得有换行
name : _domainkey 值: v=DKIM1; k=rsa; p= ***
5.3 设置spf 填写邮件服务器ip
dns txt
name @ 值 v=spf1 ip4:107.174.253.21 –all
#
# dovecot 配置部分
#
6. 要生成用于密钥交换的 Diffie-Hellman 参数,
您可以使用 openssl,但它们必须与 密钥,为此您可以查看证书,在我的情况下为 2048 位。因此, 命令是:dh.pem
设置好 letsencrypt 证书后
openssl dhparam -out /etc/dovecot/dh.pem 2048
7.spamassassin
编辑 文件 /etc/default/spamd
插入 OPTIONS="--max-children 3 --nouser-config --virtual-config-dir=/home/vmail/.spamassassin -u vmail"
systemctl enable spamd
systemctl start spamd
查看
ss -ltnp
8.哈希共享:Pyzor 和 Razor 包含在spamassassin内
apt install pyzor
apt install razor
文件:/etc/spamassassin/local.cf 添加
skip_rbl_checks 0
use_razor2 1
use_pyzor 1
rbl_timeout 15
pyzor_options --homedir /home/vmail/.spamassassin
razor_config /home/vmail/.razor/razor-agent.conf
测试 Pyzor
echo "test" | spamassassin -D pyzor
您需要创建该目录并正确设置所有者 到 vmail。然后使用您必须启动 Razor 的 vmail 用户,在 以下脚本演示如何执行此操作:
apt install sudo
sudo -u vmail mkdir /home/vmail/.razor
sudo -u vmail razor-admin -home=/home/vmail/.razor -register
sudo -u vmail razor-admin -home=/home/vmail/.razor -create
sudo -u vmail razor-admin -home=/home/vmail/.razor -discover
测试 Razor
echo "test" | spamassassin -D razor2 2>&1 | less
9. DNS 黑名单 / RBL 与 SpamAssassin
文件:/etc/spamassassin/local.cf 插入
skip_rbl_checks 0
rbl_timeout 15
10.贝叶斯滤波器 Filtros Bayesianos 【过时了。】
文件:/etc/spamassassin/local.cf
bayes_ignore_header X-Bogosity
bayes_ignore_header X-Spam-Flag
bayes_ignore_header X-Spam-Status
bayes_path /home/vmail/.spamassassin/bayes
要使用这些过滤器,您需要为以下 从某些电子邮件帐户中的两个 Spam-Yes 和 Spam-No 文件夹中进行非机器学习,在我的情况下是系统管理员的。
#############################
#!/bin/sh
# Aprende el spam que esta en los directorios indicados:
SPAM_SI=/home/vmail/web@bigoak.cn/.Spam-Si/cur/
SPAM_NO=/home/vmail/web@bigoak.cn/.Spam-No/cur/
sa-learn --spam $SPAM_SI $1
sa-learn --ham $SPAM_NO $1
##############################
此脚本必须使用 vmail 用户从 cron 中执行,从而创建 文件。/home/vmail/.spamassassin
11.用户帐户维护
必须自动删除 SPAM 文件夹中的旧电子邮件。 此文件夹将无限期填充,因为没有用户清空它。使用 以下脚本将删除超过 N 天的电子邮件:
########################
#!/bin/bash
# Borra los ficheros en cuarentena de todas las cuentas con 35 días de antigüedad
N=`find /home/vmail -type f -ctime +35 -wholename "*/.Junk/*" | wc -l`
echo "Ficheros de SPAM detectados: $N"
find /home/vmail -type f -ctime +35 -wholename "*/.Junk/*" -exec rm {} \;
########################
12.更新配置文件,重启
dpkg-reconfigure exim4-config
update-exim4.conf
systemctl restart exim4
systemctl restart dovecot
13.插入用户数据
INSERT INTO mod_exim4_domains(`id` ,`domain`)VALUES('1', 'bigoak.cn');
INSERT INTO mod_exim4_mailboxes(`id`, `email`, `password`, `maildir` )VALUES('1', 'web@bigoak.cn', MD5('******'), '/bigoak.cn/web@bigoak.cn');
需要注意的是,出于安全原因,root 用户不能接收邮件,因此最后一步设置 alias 时,通常设置为日常使用的用户,root 收到的邮件将投递到此用户收件箱内。
这些设置体现在 /etc/aliases 中。我们还可以设置当用户收到邮件时,将邮件投递到某个互联网邮箱,例如:
root: admin
admin: admin@example.com
运行 newaliases 使其生效。当系统收到邮件时(例如 Cron 定时任务),admin@example.com 就可以收到邮件提醒了。
下载:exim4.zip