搭建Postfix+Dovecot搭建邮箱服务器

前期环境准备

先准备一个域名,我这边推荐的是挂载到Cloudflare

DNS配置

1.首先创建一个mail.xxx.com的域名解析
在这里插入图片描述

2.邮箱服务器需要用到MX记录,将xxx.com指向mail.xxx.com
在这里插入图片描述

3.设置spf防伪,一般可防止邮件被当做垃圾邮件,给google的mail邮件发邮件时,必须得使用有效的spf

a: 域名
mx: 邮箱服务器
include: 第三方代理 这里填谷歌
在这里插入图片描述

开放端口

这里需要打开25端口,使用nmap可以查看当前端口是否打开

安装环境

sudo apt-get install make
# postfix编译依赖包
sudo apt-get install libmysqlclient-dev libpq-dev db*-devel libdb-dev gcc m4 libsasl2-dev
 -y

Postfix

Postfix 是一种电子邮件服务器是一个开放源代码的软件. Postfix 是MTA邮件传输代理软件.是sendmail提供替代品,每天投递上亿封邮件,Postfix试图更快、更容易管理、更安全,同时还与sendmail保持足够的兼容性.

巴拉巴拉一大堆,没办法用的人多学习的快,官方文档有点难懂

安装postfix

我这里使用的是编译安装,Postfix安装包下载,我这里使用的是3.9稳定版

先下载cyrus-sasl

cyrus-sasl 下载地址,因为编译时指定使用sasl认证需要用到

cd /usr/local
wget https://github.com/cyrusimap/cyrus-sasl/releases/download/cyrus-sasl-2.1.28/cyrus-sasl-2.1.28.tar.gz
tar -xvf cyrus-sasl-2.1.28.tar.gz
cd cyrus-sasl-2.1.28
./configure --enable-plain --enable-login --enable-cram --enable-digest --with-saslauthd=/var/run/saslauthd 
make
make install
ln -s /usr/local/include/sasl/ /usr/include/sasl
ln -s /usr/local/lib/sasl2 /usr/lib/sasl2
echo /usr/local/lib/sasl2 >> /etc/ld.so.conf
ldconfig
# 进入/usr/local 下载文件
cd /usr/local
wget http://ftp.porcupine.org/mirrors/postfix-release/official/postfix-3.9.0.tar.gz
# 创建postfix用户和组
groupadd -g 2333 postfix
useradd -g postfix -u 2334 -s /sbin/nologin -M postfix
groupadd -g 2444 postdrop
useradd -g postdrop -u 2445 -s /sbin/nologin -M postdrop
# 解压postfix
tar -xvf postfix-3.9.0.tar.gz
# 进入postfix
cd postfix-3.9.0
make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl -DUSE_TLS ' 'AUXLIBS=-L/usr/lib/mysql -lmysqlclient -lz -lrt -lm -L/usr/lib/sasl2 -lsasl2   -lssl -lcrypto'
make && make install

配置了用户和用户组直接回车到安装完成即可!

配置Postfix

postfix的核心配置文件在/etc/postfix/main.cf

1.设置myhostname为我们DNS解析的mail.xxx.com域名

在这里插入图片描述
2.设置mydomain为DNS解析的xxx.com

在这里插入图片描述
3.设置myorigin为myhostname设置的域名
在这里插入图片描述

4.设置inet_interfaces
ipv4: 只使用ipv4
ipv6: 只使用ipv6
all: 全部使用

在这里插入图片描述

5.设置mydestination,可访问链接的域名地址
在这里插入图片描述

6.设置mynetworks,运行访问的客户端,设置为0.0.0.0表示可以任意外部客户端进行访问
在这里插入图片描述

7.设置relay_domains,设置为mx指向的域名地址
在这里插入图片描述

8.设置relayhost为空,如果有需要中继服务器可以设置指向中继
在这里插入图片描述

官方的使用规范
在这里插入图片描述

9.设置inet_protocols为all
在这里插入图片描述

postfix命令

# 启动
postfix start
# 停止
postfix stop
# 重新加载
postfix reload

postfix可以使用两种sasl认证方式
Cyrus
Dovecot
因为Cyrus不支持LOGIN登录验证,导致JavaMail不能使用

postfix配置使用dovecot进行sasl认证

在/etc/postfix/main.cf的最下方配置即可

vim /etc/postfix/main.cf
# dovecot
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtp_sasl_security_options = noanonymous
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination
smtpd_sasl_authenticated_header = yes

Dovecot

Dovecot安装

sudo apt install dovecot-core dovecot-imapd dovecot-pop3d

配置Dovecot

vim /etc/dovecot/dovecot.conf

#  如果不使用IPv6,请修改为*
listen = *
vim /etc/dovecot/conf.d/10-auth.conf
 
disable_plaintext_auth = no
auth_mechanisms = plain login
vi /etc/dovecot/conf.d/10-master.conf
 
# Postfix smtp验证
unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
}
# 重启postfix 和 dovecot
sudo postfix reload
systemctl restart dovecot

生成TLS

下载openssl来生成自证书

sudo apt-get install openssl
mkdir /usr/local/postfix-ssl
cd /usr/local/postfix-ssl
# 生成秘钥
openssl genpkey -algorithm RSA -out private.key -pkeyopt rsa_keygen_bits:2048

# 生成证书签发请求
openssl req -new -key private.key -out cert.csr

# 生成自签名证书
openssl x509 -req -days 365 -in cert.csr -signkey private.key -out certificate.pem

Postfix配置TLS证书

vim /etc/postfix/main.cf


# 文件最下面添加
smtp_tls_note_starttls_offer = yes
smtpd_tls_received_header = yes
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# TLS
smtpd_tls_cert_file = /usr/local/postfix-ssl/certificate.pem
smtpd_tls_key_file = /usr/local/postfix-ssl/private.key
smtpd_tls_security_level = may
smtp_tls_CApath= /usr/local/postfix-ssl/cert.csr
smtp_tls_security_level = may

启动SMTPS服务
打开master.cf文件添加以下配置

vim /etc/postfix/master.cf


smtps     inet  n       -       n       -       -       smtpd  

在这里插入图片描述

重启postfix

sudo postfix reload

踩坑提示

由于有很多服务器供应商都不开放25端口出去使用,这里我们需要测试一下当前的服务器是否可以使用25端口

nmap 域名

在这里插入图片描述
我使用了另一台服务器测试当前的25端口,发现是关闭的,这里我们需要为smtp增加两个端口
我这里将普通请求使用587端口,TLS请求使用465端口

1.修改postfix的配置文件

# 打开master.cf文件增加一个smtp2
vim /etc/postfix/master.cf

smtp2     inet  n       -       n       -       -       smtpd

在这里插入图片描述
2.修改/etc/services文件,增加smtp2和smtps监听端口

vim /etc/services

smtp2           587/tcp         mail2
smtp2           587/udp         mail2
smtps           465/tcp         mail3
smtps           465/udp         mail3

在这里插入图片描述
3.重启postfix

sudo postfix reload

测试邮件

1.创建测试用户

useradd -g 2333 -s /sbin/nologin -M user1
useradd -g 2333 -s /sbin/nologin -M user2

2.设置密码,敲下面命令回车后输入两次密码即可

passwd user1
passwd user2

3.我这里使用python来进行测试

import smtplib

from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

from email.utils import formatdate
def sendmail(email_, header, content):
    from_addr = 'user1@kdac.top'
    passwd = '123456'

    # 邮件内容
    message = MIMEMultipart()
    message.attach(MIMEText(content, 'plain', 'utf-8'))
    # 设置发件人和主题
    message['From'] = f'user1<{from_addr}>'  # 发件人
    message['To'] = email_  #
    message['Subject'] = Header(header, 'utf-8')  # 主题
    message['Date'] = formatdate(localtime=True)

    smtp = smtplib.SMTP("mail.kdac.top", 587)  # 创建安全的smtp对象,依赖smtp服务器的安全配置

    smtp.login("user1", passwd)
    # smtp.login(from_addr, passwd)
    smtp.sendmail(from_addr, to_addrs=email_, msg=message.as_string())
    smtp.quit()
content = '''
我想吃个肯德基
'''
sendmail('xxxxx@qq.com','认识你真好,V我50',content)

收到短信说明已经配置完毕

在这里插入图片描述

DKIM

由于Google邮箱相关的平台,需要验证Message-ID,我们得需要加固认证,我这里使用的是Postfix + Opendkim

1.安装opendkim

# 安装opendkim依赖环境
sudo apt-get install libmilter-dev libssl-dev libbsd-dev -y
mkdir /usr/local/dkim
cd /usr/local/dkim

wget https://onboardcloud.dl.sourceforge.net/project/opendkim/opendkim-2.10.3.tar.gz
tar -xvf opendkim-2.10.3.tar.gz
cd opendkim-2.10.3

# 构建
./configure --with-openssl=/usr/bin/openssl --disable-shared
# 安装
make && make install

2.配置opendkim
域名更改成自己的域名

mkdir /etc/opendkim/keys/域名 -p
mkdir /var/run/opendkim/ -p

新增以下文件配置
vim /etc/opendkim.conf

AutoRestart                         Yes
AutoRestartRate                 	10/1h
Canonicalization                  	relaxed/simple
ExternalIgnoreList               	refile:/etc/opendkim/TrustedHosts
InternalHosts                       refile:/etc/opendkim/TrustedHosts
KeyTable                            refile:/etc/opendkim/KeyTable
LogWhy                              Yes
MinimumKeyBits                 		1024
Mode                                sv
PidFile                             /var/run/opendkim/opendkim.pid
SigningTable                        refile:/etc/opendkim/SigningTable
Socket                              inet:15151@localhost
Syslog                              Yes
SyslogSuccess                       Yes
LogWhy                              Yes
TemporaryDirectory              	/var/tmp
UMask                               022
UserID                              opendkim:opendkim

vim /etc/opendkim/TrustedHosts

*

vim /etc/opendkim/KeyTable
域名更改为自己的域名

域名._domainkey.域名  域名:default:/etc/opendkim/keys/域名/域名.private

在这里插入图片描述

vim /etc/opendkim/SigningTable
域名更改为自己的域名

*@域名 域名._domainkey.域名

在这里插入图片描述

2.配置postfix

vim /etc/postfix/main.cf


# milter
smtpd_milters = inet:localhost:15151
non_smtpd_milters = inet:localhost:15151
internal_mail_filter_classes = bounce
milter_protocol = 6
milter_default_action = accept

3.生成秘钥
将域名改为自己的域名

opendkim-genkey -D /etc/opendkim/keys/kdac.top/ -d  kdac.top -s kdac_top #生成随机密钥
# 添加一个用户,不属于任何
useradd -s /usr/sbin/nologin opendkim
chown opendkim.opendkim /etc/opendkim -R
chown opendkim.opendkim /etc/opendkim.conf

4.将opendikm配置成service
vim /etc/systemd/system/opendikm.service

[Unit]
Description=OpenDKIM DomainKeys Identified Mail (DKIM) Milter
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/sbin/opendkim -Dx /etc/opendkim.conf
ExecReload=/bin/kill -USR1 $MAINPID
ExecStop=/bin/kill -15 $MAINPID

[Install]
WantedBy=multi-user.target

5.配置DNS TXT记录
cat /etc/opendkim/keys/kdac.top/kdac_top.txt
在这里插入图片描述

主机记录:kdac_top._domainkey ,上图文中的内容。
记录值:上图所示()里的内容,记得把换行符删掉,双引号不要,分号保留。

在这里插入图片描述

6.重启postfix

sudo systemctl daemon-reload
sudo systemctl enable opendkim
sudo systemctl start opendkim
sudo postfix reload
  • 21
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CentOS+Postfix+Dovecot+Postfixadmin+Roundcube邮件服务器搭建步骤如下: 1. 安装 CentOS 操作系统,并更新至最新版。 2. 安装 Postfix 邮件服务器,并进行基本配置。 3. 安装 Dovecot IMAP/POP3 服务器,并进行基本配置。 4. 安装 Postfixadmin 邮箱管理系统,并进行基本配置。 5. 安装 Roundcube Webmail 邮件客户端,并进行基本配置。 具体步骤如下: 1. 安装 CentOS 操作系统,并更新至最新版。 在安装 CentOS 操作系统时,选择最小化安装,并根据实际情况进行分区和网络配置。安装完成后,使用以下命令更新系统: ``` yum update ``` 2. 安装 Postfix 邮件服务器,并进行基本配置。 使用以下命令安装 Postfix: ``` yum install postfix ``` 安装完成后,修改 /etc/postfix/main.cf 文件,使其支持 TLS 和 SASL 认证: ``` smtpd_tls_cert_file = /etc/pki/tls/certs/server.crt smtpd_tls_key_file = /etc/pki/tls/private/server.key smtpd_tls_security_level = may smtp_tls_security_level = may smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination ``` 然后重启 Postfix 服务: ``` systemctl restart postfix ``` 3. 安装 Dovecot IMAP/POP3 服务器,并进行基本配置。 使用以下命令安装 Dovecot: ``` yum install dovecot ``` 安装完成后,修改 /etc/dovecot/dovecot.conf 文件,使其支持 TLS 和 SASL 认证: ``` ssl_cert = </etc/pki/tls/certs/server.crt ssl_key = </etc/pki/tls/private/server.key auth_mechanisms = plain login ``` 然后重启 Dovecot 服务: ``` systemctl restart dovecot ``` 4. 安装 Postfixadmin 邮箱管理系统,并进行基本配置。 使用以下命令安装 Postfixadmin: ``` yum install postfixadmin ``` 安装完成后,修改 /etc/httpd/conf.d/postfixadmin.conf 文件,使其支持 SSL: ``` SSLEngine on SSLCertificateFile /etc/pki/tls/certs/server.crt SSLCertificateKeyFile /etc/pki/tls/private/server.key ``` 然后重启 Apache 服务: ``` systemctl restart httpd ``` 访问 https://your-domain.com/postfixadmin,使用管理员账号登录,创建邮箱账号和域名等相关配置。 5. 安装 Roundcube Webmail 邮件客户端,并进行基本配置。 使用以下命令安装 Roundcube: ``` yum install roundcubemail ``` 安装完成后,修改 /etc/httpd/conf.d/roundcubemail.conf 文件,使其支持 SSL: ``` SSLEngine on SSLCertificateFile /etc/pki/tls/certs/server.crt SSLCertificateKeyFile /etc/pki/tls/private/server.key ``` 然后重启 Apache 服务: ``` systemctl restart httpd ``` 访问 https://your-domain.com/roundcubemail,使用邮箱账号登录,即可使用 Roundcube 邮件客户端。 以上就是 CentOS+Postfix+Dovecot+Postfixadmin+Roundcube邮件服务器搭建步骤,如有问题可以参考相关文档或者咨询技术人员。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值