00 起因
- 我不记得我有部署过邮件服务,但我每次登录ssh都会提示我有新邮件。他们大多是本地服务发送给我自己,用来警告我的硬盘降级情况和crontab自动任务处理情况。
- 一开始我以为是我正在运行的某个nas程序为我自动部署了邮件服务,而我也可以通过
mail
命令或者mutt
命令来访问这些邮件(但只能在命令行上访问,而且很辣眼睛)。 - 当我觉得有必要部署一个web访问的邮件服务系统时,我选择了roundcubemail来作为服务程序(因为可以docekr化的镜像来快速部署),但我却一直无法连接到我的邮件服务——错误地提示IMAP服务器未能找到,对此我感到很困惑。
01 解释
我最后通过ls -l /var/mail
得知我的确有本地邮件存储,但这并不代表我启用了邮件收发服务。
- LLM告诉我,我的nas程序为我部署了邮件传输代理 (MTA):系统正在运行 Exim4 作为邮件传输代理。Exim4 服务当前是活跃的,并且自开机以来就一直在运行。它可以查看和管理本地邮件,这就解释了为什么我可以使用
mail
命令或者mutt
命令来接受系统状态邮件。 - 然而,虽然 Exim4 提供了本地邮件传递,但它本身不是 IMAP 服务器。这解释了为什么在部署邮件容器的时候没能运行中的 IMAP 进程,因为的确不存在。
- 现在问题变得简单了:
- 方案一:安装一个 IMAP 服务器(如 Dovecot),然后部署 Roundcube 或类似的 Web 邮件客户端。
- 方案二:使用一个专门为本地邮箱设计的 Web 界面,如 Squirrelmail。
考虑到多一项在线服务就会带来多一项麻烦,我决定选择第二种方案。
02 关于邮件系统
以下是
Claude
关于邮件系统的解释:
- Exim4 是一个邮件传输代理(MTA)。它负责接收、路由和发送电子邮件。
- 邮件系统确实有多种机制和实现:
- 本地邮件系统:在同一台机器上传递邮件,如系统通知。
- 网络邮件系统:在不同机器间传递邮件。
- SMTP(Simple Mail Transfer Protocol)用于发送邮件,IMAP(Internet Message Access Protocol)用于接收和管理邮件。
- 您能接收系统状态邮件是因为:
- 系统程序(如cron任务)生成状态报告。
- 这些报告被发送到本地邮件系统(通过Exim4)。
- 邮件存储在本地邮箱文件中(/var/mail/debian)。
- 在这种情况下,”邮件”指的是存储在本地文件系统中的文本消息,而不是通常意义上的通过互联网收发的电子邮件。
03 搭建本地邮箱服务
呃啊,好像比我想象的麻烦。之后再说。