快速安装一个本地开源邮件系统postfix+dovecot @Ubuntu22.40

安装一个本地开源邮件系统postfix+dovecot 还是有些波折的,在FreeBSD和WSL下都没有装成,后来是在一台单独的Ubuntu机器上安装邮件系统成功。也就是实践3部分。

实践1

安装

复制代码
sudo apt update
sudo apt install -y postfix dovecot-imapd dovecot-pop3d

选项

复制代码
───────────────────────────┤ Postfix Configuration ├───────────────────────────┐
                   │ Please select the mail server configuration type that best meets your needs.  │
                   │                                                                               │
                   │  No configuration:                                                            │
                   │   Should be chosen to leave the current configuration unchanged.              │
                   │  Internet site:                                                               │
                   │   Mail is sent and received directly using SMTP.                              │
                   │  Internet with smarthost:                                                     │
                   │   Mail is received directly using SMTP or by running a utility such           │
                   │   as fetchmail. Outgoing mail is sent using a smarthost.                      │
                   │  Satellite system:                                                            │
                   │   All mail is sent to another machine, called a 'smarthost', for              │
                   │   delivery.                                                                   │
                   │  Local only:                                                                  │
                   │   The only delivered mail is the mail for local users. There is no            │
                   │   network.                                                                    │
                   │                                                                               │
                   │ General mail configuration type:                                              │
                   │

选择Internet site

mail name设置:mail.example.local

实践2:让opencode帮助安装

最后它给出一个帮助文档:

=== 本地邮件服务器安装指南 ===

  1. 复制配置文件(需要sudo权限):

sudo cp ~/mailserver/postfix-main.conf /etc/postfix/main.cf

sudo cp ~/mailserver/dovecot-main.conf /etc/dovecot/dovecot.conf

sudo cp ~/mailserver/10-mail.conf /etc/dovecot/conf.d/10-mail.conf

sudo cp ~/mailserver/10-auth.conf /etc/dovecot/conf.d/10-auth.conf

  1. 重启服务:

sudo systemctl restart postfix

sudo systemctl restart dovecot

sudo systemctl enable postfix

sudo systemctl enable dovecot

  1. 创建邮件用户(使用系统用户):

sudo useradd -m -s /bin/bash testuser

sudo passwd testuser

  1. 测试邮件:

切换到testuser

su - testuser

创建邮箱目录

mkdir -p ~/Maildir/{cur,new,tmp}

发送测试邮件

echo "Test message" | mail -s "Test" testuser@example.com

  1. 配置邮件客户端:

服务器类型: IMAP

服务器地址: localhost 或 mail.example.com

端口: 143 (IMAP), 25 (SMTP)

用户名: testuser

密码: testuser的系统密码

SSL/TLS: 启用

=== 服务管理命令 ===

检查状态: sudo systemctl status postfix dovecot

查看日志: sudo journalctl -u postfix -u dovecot -f

查看端口: netstat -tlnp | grep -E ':(25|143|110)'

=== 故障排除 ===

如果服务无法启动,检查:

sudo postfix check

sudo dovecot -n

实战检验一下

复制代码
sudo cp ~/mailserver/postfix-main.conf /etc/postfix/main.cf
sudo cp ~/mailserver/dovecot-main.conf /etc/dovecot/dovecot.conf
sudo cp ~/mailserver/10-mail.conf /etc/dovecot/conf.d/10-mail.conf
sudo cp ~/mailserver/10-auth.conf /etc/dovecot/conf.d/10-auth.conf

sudo systemctl enable postfix
sudo systemctl restart postfix

sudo systemctl enable dovecot
sudo systemctl restart dovecot

创建邮件账户

复制代码
sudo useradd -m -s /bin/bash testuser
sudo passwd testuser

安装本地mail客户端

复制代码
sudo apt install mailutils

测试邮件

复制代码
su - testuser
mkdir -p ~/Maildir/{cur,new,tmp}
echo "Test message" | mail -s "Test" testuser@example.local

为testuser创建Maildir

sudo -u testuser mkdir -p ~testuser/Maildir/{new,cur,tmp} 2>/dev/null

sudo chown -R testuser:testuser ~testuser/Maildir 2>/dev/null

sudo chmod -R 700 ~testuser/Maildir 2>/dev/null

复制代码
# 为testuser创建Maildir
sudo -u testuser mkdir -p ~testuser/Maildir/{new,cur,tmp} 2>/dev/null
sudo chown -R testuser:testuser ~testuser/Maildir 2>/dev/null
sudo chmod -R 700 ~testuser/Maildir 2>/dev/null

修改配置文件/etc/postfix/main.cf

home_mailbox = Maildir/

重启服务

复制代码
sudo systemctl restart postfix dovecot

测试

复制代码
echo "Test message" | mail -s "Test" testuser@example.local

测试发现有问题,没有邮件

实践3

怒了,专门安装一个192.168.1.19 Ubuntu22.04服务器,安装邮件系统。

dns服务器192.168.1.3

客户端windows 10 , 192.168.0.98

先安装软件

复制代码
sudo apt update
sudo apt install -y postfix dovecot-imapd dovecot-pop3d

安装postfix时的配置:

提示选择模式:

复制代码
───────────────────────────┤ Postfix Configuration ├───────────────────────────┐
                         │ Please select the mail server configuration type that best meets your needs.  │
                         │                                                                               │
                         │  No configuration:                                                            │
                         │   Should be chosen to leave the current configuration unchanged.              │
                         │  Internet site:                                                               │
                         │   Mail is sent and received directly using SMTP.                              │
                         │  Internet with smarthost:                                                     │
                         │   Mail is received directly using SMTP or by running a utility such           │
                         │   as fetchmail. Outgoing mail is sent using a smarthost.                      │
                         │  Satellite system:                                                            │
                         │   All mail is sent to another machine, called a 'smarthost', for              │
                         │   delivery.                                                                   │
                         │  Local only:                                                                  │
                         │   The only delivered mail is the mail for local users. There is no            │
                         │   network.                                                                    │
                         │                                                                               │
                         │ General mail configuration type:                                              │
                         │                                                                               │
                         │                           No configuration                                    │
                         │                           Internet Site                                       │
                         │                           Internet with smarthost                             │
                         │                           Satellite system                                    │
                         │                           Local only                                          │
                         │

我问AI:本地安装邮件系统postfix,想用内网域名,比如mail.example.local,那么这里应该选哪个?

回答说应该用Internet site模式。

配置域名

填写域名example.local

安装还提示:Pending kernel upgrade

需要手工重启新内核才能生效。

提示选择重启的services

非常多,感觉比FreeBSD下的服务多太多了。

提示了重启的和没有重启的服务:

复制代码
Restarting services...
 systemctl restart containerd.service cron.service irqbalance.service multipathd.service packagekit.service polkit.service ssh.service systemd-journald.service systemd-networkd.service systemd-resolved.service systemd-timesyncd.service systemd-udevd.service udisks2.service upower.service
Service restarts being deferred:
 systemctl restart ModemManager.service
 /etc/needrestart/restart.d/dbus.service
 systemctl restart docker.service
 systemctl restart networkd-dispatcher.service
 systemctl restart systemd-logind.service
 systemctl restart unattended-upgrades.service
 systemctl restart user@1000.service

配置邮件服务器

域名解析相关配置

先去192.168.1.5 dns服务器,加上了对应的域名解析:

复制代码
local-data: "mail.example.local. IN A 192.168.1.19"

192.168.1.19本机加上自解析,修改/etc/hosts文件:

复制代码
127.0.0.1       mail    mail.example.local

使用sudo service --status-all看看服务状态

在192.168.1.19邮件服务器上看看邮件服务的状态:

复制代码
sudo service --status-all
 [ + ]  apparmor
 [ + ]  apport
 [ - ]  console-setup.sh
 [ + ]  cron
 [ - ]  cryptdisks
 [ - ]  cryptdisks-early
 [ + ]  dbus
 [ + ]  dovecot
 [ - ]  grub-common
 [ - ]  hwclock.sh
 [ + ]  irqbalance
 [ - ]  iscsid
 [ - ]  keyboard-setup.sh
 [ + ]  kmod
 [ - ]  lvm2
 [ - ]  lvm2-lvmpolld
 [ - ]  open-iscsi
 [ - ]  open-vm-tools
 [ + ]  plymouth
 [ + ]  plymouth-log
 [ + ]  postfix

看来postfix和dovecot都启动了。

安装unbutu下的mail软件

在192.168.1.19本机安装命令行端的mail软件,以便本机测试:

复制代码
sudo apt install mailutils

192.168.1.19本机测试

复制代码
echo "Test message" | mail -s "Test" testuser@example.local

测试完用mail看看邮件,发现有这封信:

复制代码
skywalk@ub19:~$ echo "Test message" | mail -s "Test" skywalk@example.local
skywalk@ub19:~$ mail
"/var/mail/skywalk": 2 messages 2 new
>N   1 Mail Delivery Syst Fri Feb  6 12:07  71/2071  Undelivered Mail Returned to Sender
 N   2 skywalk            Fri Feb  6 12:07  14/408   Test

能发邮件,能看到邮件,这证明邮件系统成功了!

配置Windows客户端软件

Windows安装Mozilla Thunderbird 客户端软件,配置如下,Connection security配置auto:

配置之后进行Re-test测试,测试通过。

save的时候有提示:

因为是本地实践,所以没有加密也没有关系。

但是后来还是配置了加密!

windows上写个测试邮件

发现root账户收到了邮件,邮件内容;

复制代码
Return-Path: <skywalk@example.local>
X-Original-To: root@example.local
Delivered-To: root@example.local
Received: from [192.168.0.98] (unknown [192.168.1.2])
        by ub19 (Postfix) with ESMTPS id B97872786A
        for <root@example.local>; Fri,  6 Feb 2026 13:17:16 +0000 (UTC)
Message-ID: <0db40656-39d0-481a-a0fa-5c51837359ca@example.local>
Date: Fri, 6 Feb 2026 21:17:13 +0800
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: root@example.local
From: skywalk <skywalk@example.local>
Subject: 这是从sky发送到root的测试
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

测试一下


hello

可以看到这是从另一台机器发送过来的。

当然,这是内网邮件服务器,使用了内网域名,所以没法发送到公网的邮箱。

总结

技术的升级真是让人感叹啊!

现在邮箱系统比以前要复杂很多,但是安装却简单了很多。

尤其是有不懂的地方,都可以问AI 。尽管我用了好几天才搞定开源邮箱系统的安装这件事,也已经很开心了。

相关推荐
HelloGitHub7 小时前
《HelloGitHub》第 119 期
开源·github
冬奇Lab20 小时前
一天一个开源项目(第35篇):GitHub Store - 跨平台的 GitHub Releases 应用商店
开源·github·资讯
Bigger1 天前
为什么你的 Git 提交需要签名?—— Git Commit Signing 完全指南
git·开源·github
chainStriker2 天前
从零到上线:Python开源项目的规范化开发与发布指南
python·开源
IvorySQL2 天前
揭开 PostgreSQL 读取效率问题的真相
数据库·postgresql·开源
归叶再无青2 天前
企业级web服务(Tomcat开源web应用服务器)
运维·前端·开源·tomcat·bash
wasp5202 天前
GitNexus 核心引擎深度解析
人工智能·开源·gitnexus
亲爱的马哥2 天前
我们做了一个100%开源的数据可视化系统
开源