超完整详细的Postfix Dovecot电子邮件服务器配置指南

        最近配置邮件服务器配置的真的有点崩溃,所以来写一篇博客,总结一篇教程。这篇文章追求的是尽可能的完整,包含所有需要的内容:基本云服务器部署,DNS, Postfix, Dovecot, MySQL, 防火墙,SSL, 反向DNS (PTR),DKIM签名等等。

        在使用这篇文章的时候,笔者建议同时打开一个Word文档,将所有设置的密码记录下来,以免配置到后面的步骤的时候忘记前面步骤使用过的密码。

        这篇文章写的真的超认真的φ(>ω<*) ,每一步都有认真在写,编辑排版也尽量精致了。笔者把这篇文章公开了,所以如果帮到了你,麻烦按个赞再走嘛 φ(>ω<*)

目录

基础云服务器配置和DNS配置:

基础云服务器配置

基础DNS配置:

检查防火墙设置:

设置Hosts文件:

初步安装:

匹配版本号(大佬请忽略)

安装必要的包

安装和签发SSL证书:

检查服务的版本号

安装SSL证书需要的包

签发SSL证书

配置MariaDB数据库

配置MariaDB数据库的基础配置

创建域名和用户数据表格

添加用户和密码的数据

确认数据库是否配置正确

配置Postfix服务器

配置main.cf

创建并配置main.cf中声明的文件

检查main.cf的配置是否正确:

配置master.cf

配置Dovecot服务器

配置基本配置文件

配置master.conf

邮件服务器初步测试

MailX本地传输邮件测试

邮件客户端接收邮件测试

其他DNS和签名配置

配置SPF记录

配置反向DNS记录 (PTR记录)

配置DKIM记录

在服务器配置DKIM签名

在DNS中配置DKIM记录

配置Postfix使用DKIM签名

打开更详细的日志:

打开Dovecot的Verbose Logs

打开Postfix的Verbose Logs

参考链接


基础云服务器配置和DNS配置:

基础云服务器配置

        笔者使用的是 'CentOS7 SELinux 7 x64' 操作系统,所以如果不太了解的话,请配置同样系统的云虚拟机。大佬自行忽略

        笔者推荐使用本机SSH服务连接到服务器,而不是用云服务器提供商提供的网页版Remote Console。如果是第一次接触SSH,请参考这篇文章。登录root即可。

基础DNS配置:

在你购买的域名下,找到DNS配置界面,添加以下几条记录:

        1. 指向服务器的A记录 (Value配置成你的邮件的IP地址):

TypeNameValueTTL
Aexample.comxxx.xx.xxx.x600

        2. 指向邮件服务器的A记录 (依然使用IP自制作为Value):

TypeNameValueTTL
Amail.example.comxxx.xx.xxx.x600

        3. 指向邮件服务器的MX记录:

TypeNameMail Server (Value)PriorityTTL
MXmail.example.comexample.com10

600

检查防火墙设置:

  1. 运行Firewall指令: firewall-cmd --list-ports。确认输出的列表中是否包含这些端口:465, 993, 995, 80. 如果没有输出的话,运行下面的指令分别打开这四个端口。没有输出哪个端口就说明哪个被防火墙阻挡,你就需要打开那个端口(将465替换为你需要的端口):
    firewall-cmd --add-port=465/tcp --permanent
    firewall-cmd --reload
  2. 运行IPTables指令来确认端口是否处于ACCEPT状态:
    iptables -nL | grep 465
    iptables -nL | grep 993
    iptables -nL | grep 995
    iptables -nL | grep 80

设置Hosts文件:

打开 /etc/hosts, 确认里面是否包含了以下两行。如果不包含或不完整,按照下面的内容修改。其中192.0.2.0是你的公共IP地址,hostname 是你的本地主机名。

127.0.0.1 localhost.localdomain localhost
192.0.2.0 hostname.example.com hostname

初步安装:

        笔者使用Postfix作为SMTP服务器, Dovecot作为POP3和IMAP服务器, MariaDB存储用户数据。

匹配版本号(大佬请忽略)

        如果版本号不对导致了报错的话,或者担心新版本的配置有更新的话,可以使用和笔者一样的版本号。直接从pkgs.org下载指定版本的包,然后下面使用yum指令的时候,指定你下载的包的路径即可。大佬请自行忽略这部分

运行以下的指令,分别查看本机已有安装包的版本号:

sudo yum info postfix
sudo yum info dovecot
sudo yum info mariadb-server
sudo yum info dovecot-mysql

确认输出的版本号是否和下面的版本号匹配:

Postfix:
Version     : 2.10.1
Release     : 9.el7

Dovecot:
Version     : 2.2.36
Release     : 8.el7

MariaDB-server:
Version     : 5.5.68
Release     : 1.el7

dovecot-mysql:
Version     : 2.2.36
Release     : 8.el7

如果版本不匹配,但想要使用和笔者一样的版本,可以从pkgs.org直接下载指定版本的rpm包并安装。以下是四个rpm包在pkgs.org的链接:

Postfix 2.10.1: http://mirror.centos.org/centos/7/os/x86_64/Packages/postfix-2.10.1-9.el7.x86_64.rpm

Dovecot 2.2.36: http://mirror.centos.org/centos/7/os/x86_64/Packages/dovecot-2.2.36-8.el7.x86_64.rpm

dovecot-mysql 2.2.36: http://mirror.centos.org/centos/7/os/x86_64/Packages/dovecot-mysql-2.2.36-8.el7.x86_64.rpm

MariaDB-server 5.5.68: http://mirror.centos.org/centos/7/os/x86_64/Packages/mariadb-server-5.5.68-1.el7.x86_64.rpm

可以使用wget指令分别下载这四个包到指定的路径。如果不熟悉wget指令的使用,可以参考这篇文章:(动态演示)wget命令的使用-CentOS7

安装必要的包

如果你没有下载包,想要直接安装,则运行以下指令:

yum install postfix dovecot mariadb-server dovecot-mysql

        如果你想要使用下载的包,可以将每一个服务替换成你的包的路径。例如: yum install /root/postfix-2.10.1-9.el7.x86_64.rpm,像这样将每一个包都替换成指向你使用wget指令下载的包的路径。如果找不到文件路径,参考这篇文章

安装和签发SSL证书:

        SSL证书有多种签发的方式,可以自行签发,也可以使用第三方机构的服务。笔者使用的是Cerbot的服务。(大佬自行忽略,不过在后面安装Postfix和Dovecot的时候记得把SSL证书的路径替换成自己的)

检查服务的版本号

检查版本号的指令:

yum info epel-release
yun info python2-certbot-nginx
yum info nginx

版本号:

epel-release
Version     : 7
Release     : 14

python2-certbot-nginx
Version     : 1.11.0
Release     : 1.el7

nginx
Version     : 1.20.1
Release     : 10.el7

epel-release的下载链接:https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-14.noarch.rpm

python2-certbot-nginx的链接:https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/p/python2-certbot-nginx-1.11.0-1.el7.noarch.rpm

nginx的链接:http://mirror.centos.org/centos/7/sclo/x86_64/rh/Packages/r/rh-nginx120-nginx-1.20.1-1.el7.x86_64.rpm

安装SSL证书需要的包

首先,安装epel-release,运行以下指令 (版本配置同上):

sudo yum install epel-release

然后,安装nginx服务。运行下面的指令:

sudo yum install python2-certbot-nginx nginx

签发SSL证书

运行以下指令以签发SSL证书:

sudo certbot --nginx

签发过程中cerbot会要求你输入你的域名(第一次使用可能会要求你输入你的的私人电子邮件地址), 如实填写即可。下面所有的选项全部填写yes即可。

        签发之后可能会报错: Could not automatically find a matching server block for example.com. Set the `server_name` directive to use the Nginx installer. 这个报错应该是因为你的服务器上没有Web Server (笔者个人理解不确定对不对)。这可能应该会导致你的证书无法自动更新,不过这没有问题。证书过期的时候手动更新就好了。

检查SSL证书是否存在, 运行这条指令:ll /etc/letsencrypt/live/example.com, 你应该能看到目录中有下面四个文件:

lrwxrwxrwx. 1 root root  33 Aug 31 16:33 cert.pem
lrwxrwxrwx. 1 root root  34 Aug 31 16:33 chain.pem
lrwxrwxrwx. 1 root root  38 Aug 31 16:33 fullchain.pem 
lrwxrwxrwx. 1 root root  36 Aug 31 16:33 privkey.pem

文件存在,即说明SSL证书已经签发。

配置MariaDB数据库

        笔者使用MariaDB数据库,存储域名,用户以及密码等等信息。

配置MariaDB数据库的基础配置

        首先,运行这条指令启动MariaDB服务: sudo systemctl start mariadb

        然后运行这条指令:sudo mysql_secure_installation,这条指令可以帮助使用者初始化MariaDB数据库。在过程中设置自己的root密码,然后记录下来 (注意不要把root密码丢了)。其他的选项一律填yes就可以了。

创建域名和用户数据表格

        首先,运行这条指令创建mailserver数据库:sudo mysqladmin -u root -p create mailserver。输入你刚才设置的root密码。

        然后,登入MySQL. 使用这条指令:sudo mysql -u root -p

        登入之后,运行以下指令,创建一个mailuser的用户(给Postfix和Dovecot查找的时候使用),并赋予查找这个数据库的权限。将指令中最后面部分的mailuserpass设置成自己需要的密码,并记录。完成后运行flush命令

GRANT SELECT ON mailserver.* TO 'mailuser'@'127.0.0.1' IDENTIFIED BY 'mailuserpass';
FLUSH PRIVILEGES;

        使用这条指令:USE mailserver,选择到mailserver数据库里面。首先,需要创建一个针对域名需要用到的表。直接输入以下指令即可。

CREATE TABLE `virtual_domains` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

创建一个服务于电子邮件地址和密码表. 直接输入以下指令:

CREATE TABLE `virtual_users` (
  `id` int(11) NOT NULL auto_increment,
  `domain_id` int(11) NOT NULL,
  `password` varchar(106) NOT NULL,
  `email` varchar(100) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `email` (`email`),
  FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

创建alias表: 

CREATE TABLE `virtual_aliases` (
  `id` int(11) NOT NULL auto_increment,
  `domain_id` int(11) NOT NULL,
  `source` varchar(100) NOT NULL,
  `destination` varchar(100) NOT NULL,
  PRIMARY KEY (`id`),
  FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

添加用户和密码的数据

        输入以下指令,向virtual_domains这个表中,添加数据。将指令中的example.com和hostname分别替换为你的域名和你的主机名。

INSERT INTO `mailserver`.`virtual_domains`
  (`id` ,`name`)
VALUES
  ('1', 'example.com'),
  ('2', 'hostname.example.com'),
  ('3', 'hostname'),
  ('4', 'localhost.example.com');

        然后,在virtual_users表中,分别创建email1和email2两个用户用于测试。

INSERT INTO `mailserver`.`virtual_users`
  (`id`, `domain_id`, `password` , `email`)
VALUES
  ('1', '1', ENCRYPT('password', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'email1@example.com'),
  ('2', '1', ENCRYPT('password', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'email2@example.com');

确认数据库是否配置正确

        分别运行下面的指令,然后检查输出的表是否正确:

SELECT * FROM mailserver.virtual_domains;
SELECT * FROM mailserver.virtual_users;

        最后使用exit指令登出MariaDB数据库。

配置Postfix服务器

        Postfix 是一种电子邮件服务器,它是由任职于IBM华生研究中心(T.J. Watson Research Center)的荷兰籍研究员Wietse Venema为了改良sendmail邮件服务器而产生的。最早在1990年代晚期出现,是一个开放源代码的软件。

配置main.cf

        首先,打开/etc/postfix/main.cf 文件,按照下面的内容进行配置。推荐使用vim编辑器。可以直接搜索每一个参数,然后进行配置。这里注意,有一些地方可能已经有默认的配置被取消注释了。在配置的时候,如果选择取消正确配置的注释,那么请将错误的配置注释掉。重点关注inet_interfaces的配置。

smtpd_banner = $myhostname ESMTP $mail_name (CentOS)
biff = no

append_dot_mydomain = no

readme_directory = no

smtpd_tls_cert_file=/etc/letsencrypt/live/example.com/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/example.com/privkey.pem
smtpd_use_tls=yes
smtpd_tls_auth_only = yes
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtpd_sasl_security_options = noanonymous, noplaintext
smtpd_sasl_tls_security_options = noanonymous

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydomain = example.com
myorigin = $mydomain
mydestination = localhost, localhost.$mydomain
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all

virtual_transport = lmtp:unix:private/dovecot-lmtp

virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf,
        mysql:/etc/postfix/mysql-virtual-email2email.cf

注意,上述配置文件不是完整文件,请搜索每一个参数,如果不存在的参数则自行添加即可。

创建并配置main.cf中声明的文件

首先,创建/etc/postfix/mysql-virtual-mailbox-domains.cf文件。并在文件中添加以下内容。将mailuserpass换成上面设置的mailuser的密码 (注意不是root密码)。

user = mailuser
password = mailuserpass
hosts = 127.0.0.1
dbname = mailserver
query = SELECT 1 FROM virtual_domains WHERE name='%s'

然后,创建/etc/postfix/mysql-virtual-mailbox-maps.cf,然后同样的操作。

user = mailuser
password = mailuserpass
hosts = 127.0.0.1
dbname = mailserver
query = SELECT 1 FROM virtual_users WHERE email='%s'

然后创建/etc/postfix/mysql-virtual-alias-maps.cf,同理

user = mailuser
password = mailuserpass
hosts = 127.0.0.1
dbname = mailserver
query = SELECT destination FROM virtual_aliases WHERE source='%s'

然后创建/etc/postfix/mysql-virtual-email2email.cf

user = mailuser
password = mailuserpass
hosts = 127.0.0.1
dbname = mailserver
query = SELECT email FROM virtual_users WHERE email='%s'

检查main.cf的配置是否正确:

首先,重启Postfix: sudo systemctl restart postfix

运行以下两条指令确认Postfix是否能够查找数据库中的表。如果没有问题,指令应该返回'1'。

sudo postmap -q example.com mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
sudo postmap -q email1@example.com mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf

配置master.cf

打开/etc/postfix/master.cf这个文件,然后按照下面的内容进行配置。记住,不要重复参数。

smtp      inet  n       -       n       -       -       smtpd
#smtp      inet  n       -       -       -       1       postscreen
#smtpd     pass  -       -       -       -       -       smtpd
#dnsblog   unix  -       -       -       -       0       dnsblog
#tlsproxy  unix  -       -       -       -       0       tlsproxy
submission inet n       -       -       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
  -o smtpd_reject_unlisted_recipient=no
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
smtps     inet  n       -       -       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING

运行 sudo chmod -R o-rwx /etc/postfix, 然后重启Postfix:  sudo systemctl restart postfix

配置Dovecot服务器

        Dovecot 是一个开源的 IMAP 和 POP3 邮件服务器,支持 Linux/Unix 系统。POP / IMAP 是 MUA 从邮件服务器中读取邮件时使用的协议。其中, POP3协议是从邮件服务器中下载邮件存起来,IMAP4 则是将邮件留在服务器端直接对邮件进行管理、操作。Dovecot 是一个比较新的软件,由 Timo Sirainen 开发,最初发布于 2002年7月。作者将安全性考虑在第一,所以 Dovecot 在安全性方面比较出众。另外,Dovecot 支持多种认证方式,所以在功能方面也比较符合一般的应用。

配置基本配置文件

首先,打开/etc/dovecot/dovecot.conf, 然后将下面的两行参数取消注释。

protocols = imap pop3 lmtp
listen = *, ::

然后打开/etc/dovecot/conf.d/10-mail.conf, 配置下面的参数:

mail_location = maildir:/var/mail/vhosts/%d/%n
mail_privileged_group = mail

运行sudo mkdir -p /var/mail/vhosts/example.com, 创建文件夹。注意将example.com替换成你的域名。然后运行下面的指令,创建vmail用户,并赋予它访问权限: 

sudo groupadd -g 5000 vmail
sudo useradd -g vmail -u 5000 vmail -d /var/mail/
sudo chown -R vmail:vmail /var/mail/

打开/etc/dovecot/conf.d/10-auth.conf, 并配置以下参数:

disable_plaintext_auth = yes

auth_mechanisms = plain login

!include auth-system.conf.ext

!include auth-sql.conf.ext

打开/etc/dovecot/conf.d/auth-sql.conf.ext,配置一下参数:

passdb {
  driver = sql
  args = /etc/dovecot/dovecot-sql.conf.ext
}

userdb {
  driver = static
  args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n
}

创建/etc/dovecot/dovecot-sql.conf.ext,然后在里面输入一下内容。注意将密码替换成自己的。

driver = mysql
connect = host=127.0.0.1 dbname=mailserver user=mailuser password=mailuserpass
default_pass_scheme = SHA512-CRYPT
password_query = SELECT email as user, password FROM virtual_users WHERE email='%u';

运行以下指令,赋予Dovecot访问权限:

sudo chown -R vmail:dovecot /etc/dovecot
sudo chmod -R o-rwx /etc/dovecot

配置master.conf

打开/etc/dovecot/conf.d/10-master.conf这个文件,分别找到下面5个服务,并按照下面给定的参数进行配置。

service imap-login {
  inet_listener imap {
    port = 0
  }
  inet_listener imaps {
    port = 993
    ssl = yes
  }

}

service pop3-login {
  inet_listener pop3 {
    port = 0
  }
  inet_listener pop3s {
    port = 995
    ssl = yes
  }
}

service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    #mode = 0666i
    mode = 0600
    user = postfix
    group = postfix
  }

}

service auth {

  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
    group = postfix
  }

  unix_listener auth-userdb {
    mode = 0600
    user = vmail
  }

  user = dovecot
}

service auth-worker {

  user = vmail
}

打开:/etc/dovecot/conf.d/10-ssl.conf,配置下面的参数:

ssl = required

ssl_cert = </etc/letsencrypt/live/example.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/example.com/privkey.pem

最后重新启动Dovecot:  sudo systemctl restart dovecot

邮件服务器初步测试

        到目前为止,如果配置没有问题,发送本地邮件已经没有任何问题了。笔者建议在这里先进性一次MailX测试,已确认上述配置是否正确。

MailX本地传输邮件测试

安装MailX并发送邮件 (MailX不需要关心版本问题,直接安装即可):

yum install mailx
mail email1@example.com

第二条指令会从root用户向你的email1账户发送邮件。随便发送任何内容都可以。

然后使用cd指令,进入到文件夹: cd /var/mail/vhosts/example.com/email1。进入之后,输入find指令, 查看是否输出以下内容:

.
./dovecot-uidvalidity
./new
./maildirfolder
./dovecot.index.cache
./cur
./cur/1539202420.M440788P27259.mail,S=450,W=465:2,S
./dovecot.index.log
./dovecot-uidlist
./dovecot-uidvalidity.5bbe5d50
./tmp

如果成功看到了这些内容,那么本地测试就已经成功了。

邮件客户端接收邮件测试

        本地测试成功之后,还需要测试邮件客户端是否能够收到邮件。这里推荐使用FoxMail进行测试。前往FoxMail的官方网站,下载FoxMail的客户端到自己的PC (看清楚了,别装到服务器上去)。

        下载安装完成之后,选择登录其他邮件。地址输入email1@example.com, 密码输入你的第一个用户的密码 (在MariaDB中配置过)。登录的时候会要求你填写一些设置。按照下面的示例填写,或者可以按照你自己的DNS配置填写。注意一定要勾选SSL选项。

这时你应该能够从收件箱中看到你刚刚发送的测试邮件:

其他DNS和签名配置

        只有这样的配置是没有办法向外部发送邮件,也没有办法接收外部邮件的。如果需要收发外部邮件,还需要进行以下配置。

配置SPF记录

回到一开始的DNS记录配置界面,添加下面这条记录 (将xxx.xx.xxx.x替换为你的IP地址):

TypeNameTXT ValueTTL
TXT@v=spf1 ip4:xxx.xx.xxx.x ~all600

配置反向DNS记录 (PTR记录)

        现在,由于有大量的垃圾邮件,很多邮件服务器都会要求邮件发送方配置反向DNS记录,也就是PTR记录。PTR记录并不是由你的域名提供商提供,而是由云服务器提供商提供。如果你的云服务器提供商并没有在设置界面允许你配置反向DNS记录,那么你需要联系它们的客服来进行配置

找到反向DNS记录配置的页面,并配置如下值:

        需要注意的有两点:反向DNS记录的生效时间远远超过普通DNS记录。配置完反向DNS记录可能需要将近一个小时才能生效。另外,如果你的DNS记录中,配置的是smtp.example.com, 那么你需要将反向DNS记录配置为smtp.example.com。

配置DKIM记录

        现在,很多的邮件服务器都会要求邮件发送方发送的每一封邮件中,都有DKIM签名。如果没有DKIM签名,有很大概率你发出的邮件会被拒收。

在服务器配置DKIM签名

        首先,使用sudo yum install opendkim安装OpenDKIM. 这一步不需要考虑版本的问题。安装完成之后打开配置文件/etc/opendkim.conf,按照下图进行配置。

找到Mode    v, 并改成Mode    sv然后找到下面所演示的参数,直接取消注释即可。

最后,在文件尾部,加上下面两行内容:

Domain example.com
RequireSafeKeys False

然后,打开/etc/opendkim/SigningTable这个文件,在最后一行,加上如下配置:

*@example.com default._domainkey.example.com

然后,打开/etc/opendkim/KeyTable文件,并在文件末尾添加下面一行内容:

default._domainkey.example.com example.com:selector:/etc/opendkim/keys/yourdomain.com/default.private

打开/etc/opendkim/TrustedHosts, 添加*.example.com, 如下图:

在DNS中配置DKIM记录

在服务器中创建文件: sudo mkdir /etc/opendkim/keys/example.com。然后输入下面两条指令生成Key并输出:

sudo opendkim-genkey -b 1024 -d example.com -D /etc/opendkim/keys/example.com -s default -v
sudo chown opendkim:opendkim /etc/opendkim/keys -R 
sudo cat /etc/opendkim/keys/example.com/default.txt

然后会输出如下内容。将内容复制到剪贴板。

图片来源: easydmarc.com

打开DNS配置界面,添加如下记录。Value粘贴刚刚复制的内容,但是注意将中间的引号和空格删掉(那是由于换行所添加的引号,如示例)

TypeNameTXT ValueTTL
TXTdefault._domainkey.example.comv=DKIM1; k=rsa;p=.....600

配置Postfix使用DKIM签名

打开文件/etc/postfix/main.cf, 在结尾加入如下内容:

smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept

最后重启Postfix和OpenDKIM:

sudo service opendkim restart
sudo service postfix restart

这样一样来就全部配置完成了!(撒花~~)

可以使用FoxMail发送一封外部邮件,看看有没有问题

打开更详细的日志:

        如果配置的有问题,可以根据下面的步骤打开更详细的日志,来锁定配置的问题。

打开Dovecot的Verbose Logs

打开/etc/dovecot/conf.d/10-logging.conf,找到下面的参数,取消注释并配置为yes

auth_verbose = yes
mail_debug = yes
verbose_ssl = yes

然后重启Dovecot: sudo systemctl restart dovecot

打开Postfix的Verbose Logs

打开/etc/postfix/master.cf, 在下面一行中加上 -v: 

smtp      inet  n       -       -       -       -       smtpd -v

smtps同理。完成后,重启Postfix: sudo systemctl restart postfix

参考链接:

https://blog.51cto.com/kusorz/1703769
https://www.linode.com/docs/guides/email-with-postfix-dovecot-and-mariadb-on-centos-7/
https://www.linode.com/docs/guides/troubleshooting-problems-with-postfix-dovecot-and-mysql/
https://baike.baidu.com/item/postfix/10077421
https://baike.baidu.com/item/dovecot/3523768
https://easydmarc.com/blog/how-to-configure-dkim-opendkim-with-postfix/
https://www.vultr.com/docs/how-to-create-reverse-dns-or-ptr-records-in-the-vultr-control-panel/

  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
下面是安装和配置postfixdovecot的命令: 1. 安装postfix: ``` sudo apt-get update sudo apt-get install postfix ``` 2. 配置postfix: ``` sudo nano /etc/postfix/main.cf ``` 在文件中添加以下内容: ``` myhostname = example.com mydomain = example.com myorigin = $mydomain inet_interfaces = all mydestination = $myhostname, localhost.$mydomain, $mydomain mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 home_mailbox = Maildir/ smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) smtp_tls_security_level = may smtpd_tls_security_level = may smtp_tls_note_starttls_offer = yes smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom ``` 保存并退出文件,然后重新启动postfix: ``` sudo service postfix restart ``` 3. 安装dovecot: ``` sudo apt-get install dovecot-core dovecot-imapd dovecot-pop3d ``` 4. 配置dovecot: ``` sudo nano /etc/dovecot/conf.d/10-auth.conf ``` 找到以下行: ``` #disable_plaintext_auth = yes ``` 取消注释并将其更改为以下内容: ``` disable_plaintext_auth = no ``` 保存并退出文件。 然后打开以下文件: ``` sudo nano /etc/dovecot/conf.d/10-mail.conf ``` 找到以下行: ``` mail_location = mbox:~/mail:INBOX=/var/mail/%u ``` 将其更改为以下内容: ``` mail_location = maildir:~/Maildir ``` 保存并退出文件。 最后启动dovecot: ``` sudo service dovecot restart ``` 现在你已经成功安装和配置postfixdovecot,你可以使用邮件客户端测试它是否正常工作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夢の中の青空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值