debian12+exim4+dovecot+MariaDB配置

作者:15354045@qq.com

备份换主机的时候直接覆盖配置文件。

需修改的文件:

\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