关于邮件服务器搭建的杂七杂八

前言

之前搭建邮件服务器的时候踩过好多坑,然而过了好几年现在都忘得差不都了,前段时间想手动添加一个邮箱都忘记怎么添加了。遂简单记录一下整个搭建流程。

原理

收件

收发

原理见图,大致就是Postfix提供SMTP协议(端口25,465)接受邮件,然后通过SMTPDLMTP协议在服务器内部将邮件送到Dovecot维护的信箱。Dovecot 通过POP3协议或IMAP协议(端口143,993)向外提供查看信件的服务。

软件安装

软件安装这块就不多说了,忘得差不多了,缺什么的补装上什么就行。

mariadb代替mysql。执行以下命令:

1
2
apt update
apt install mariadb-server

Postfix,dovecot 以及 opendkim 的安装:

1
2
3
apt install opendkim
apt install postfix postfix-mysql
apt install dovecot dovecot-mysql dovecot-pop3d dovecot-imapd dovecot-lmtpd

另外注意防火墙的配置,需要开放几个端口。993 465 25

配置Postfix服务器

设置邮件安全

这些部分网上写得挺多:

好麻烦懒得写了

dovecot的一个设置

/etc/dovecot/conf.d/auth-sql.conf.ext里:

1
2
3
4
5
6
passdb {
driver = sql
# Path for SQL configuration file, see example-config/dovecot-sql.conf.ext
args = /etc/dovecot/dovecot-sql.conf.ext
}

/etc/dovecot/dovecot-sql.conf.ext 里:

1
2
3
4
driver = mysql
connect = host=127.0.0.1 dbname=mailserver user=umail password=xx
default_pass_scheme = SHA512-CRYPT
password_query = SELECT email AS user, password FROM virtual_users WHERE email='%u' ;

添加用户时,对应的SQL应该为:

1
INSERT INTO virtual_users (email, password) VALUES ('new_mail', ENCRYPT('your_password', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))));

openssl + nc 测试邮件收发

配置好之后如果出问题,用nc和openssl可以找找哪里出错了。可以用nc检查一下端口开放没有。

首先进行连接:

1
2
3
# 二选一:
# nc smtp.example.com 25
# openssl s_client -connect smtp.example.com:465

连接上之后:(注意base64加密时不要带上回车,也就是说echo -n 'text'|base64需要带上-n参数)

1
2
3
4
5
6
7
8
9
10
11
12
EHLO example.com
AUTH LOGIN
base64_encoded_username
base64_encoded_password
MAIL FROM:<your_email@example.com>
RCPT TO:<recipient_email@example.com>
DATA
Subject: Test Email

This is a test email.
.
QUIT

可以向chatgpt询问这些协议的具体格式。

检测工具

关于邮件服务器搭建的杂七杂八

https://psu.monster/post/2024/36120c2d5ce6

作者

psu

发布于

2024-06-19

更新于

2024-06-19

许可协议

评论

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×