Top

在Debian上安装邮件系统

postfix和dovecot

目标是基本的邮件系统postfix+dovecot,有SASL加密认证,使用文本格式的虚拟账号。

  • postfix提供smtp服务
  • dovecot提供pop3、imap服务
  • 安装debian

    依然是最简安装,只选择ssh服务器和标准系统包。
    Debian的安装以及换源方法可以参照debian+dwm

    安装postfix

    使用apt install postfix命令安装postfix,提示会安装两个软件包:postfix和ssl-cert。
    同时还列出了推荐的包,比如procmail、postfix-mysql、postfix-pcre、sasl2-bin、dovecot-common、resolvconf等等。
    安装postfix时系统会让选择邮件服务器的配置类型,可选项有以下五个: 按默认选择,下一步需要设置系统邮件名称,也就是@后面的。

    安装dovecot

    实际上并没有一个叫dovecot的包,而是有若干个不同的包。作为邮件服务器,最基本的是pop3、imap这两项。
    apt install dovecot-pop3d dovecot-imapd
    它实际上会安装dovecot-core、dovecot-imapd、dovecot-pop3d、libexttextcat、libexttextcat-data、liblua、libsodium、libstemmer0d

    配置

    以上两步安装完postfix和dovecot之后使用以下命令启动它们:
    service postfix start
    service dovecot start
    然后使用以下命令可以看到系统已经开放了邮件相关的一些端口:
    root@mail:~# ss -lntup
    Netid   State      Recv-Q    Send-Q    Local Address:Port    Peer Address:Port     Process
    tcp     LISTEN     0         128       0.0.0.0:22            0.0.0.0               users:(("sshd",pid=443,fd=3))
    tcp     LISTEN     0         100       0.0.0.0:25            0.0.0.0:*             users:(("master",pid=1838,fd=13))
    tcp     LISTEN     0         100       0.0.0.0:993           0.0.0.0:*             users:(("dovecot",pid=5768,fd=40))
    tcp     LISTEN     0         100       0.0.0.0:995           0.0.0.0:*             users:(("dovecot",pid=5768,fd=23))
    tcp     LISTEN     0         100       0.0.0.0:110           0.0.0.0:*             users:(("dovecot",pid=5768,fd=21))
    tcp     LISTEN     0         100       0.0.0.0:143           0.0.0.0:*             users:(("dovecot",pid=5768,fd=38))
    tcp     LISTEN     0         128       [::]:22               [::]:*                users:(("sshd",pid=443,fd=4))
    tcp     LISTEN     0         100       [::]:25               [::]:*                users:(("master",pid=1838,fd=14))
    tcp     LISTEN     0         100       [::]:993              [::]:*                users:(("dovecot",pid=5768,fd=41))
    tcp     LISTEN     0         100       [::]:995              [::]:*                users:(("dovecot",pid=5768,fd=24))
    tcp     LISTEN     0         100       [::]:110              [::]:*                users:(("dovecot",pid=5768,fd=22))
    tcp     LISTEN     0         100       [::]:143              [::]:*                users:(("dovecot",pid=5768,fd=39))
    
    端口号定义:
    端口号 含义
    25 smtpd
    110 pop3d
    143 imapd
    993 openssl/imapd
    995 openssl/pop3d
    此时从客户端电脑telnet到邮件服务器的25、110、143端口都会看到连接成功的界面。

    使用以下步骤做简单测试:
    telnet mail.test.com 25
    220 mail.test.com ESMTP Postfix (Debian/GNU)
    mail from: testuser@test.com
    250 2.1.0 Ok
    rcpt to: testuser@test.com
    250 2.1.5 Ok
    data
    354 End data with .
    dsfsd
    lkwef
    .
    250 2.0.0 Ok: queued as AF0B742C0788
    quit
    221 2.0.0 Bye
    
    然后可以去查看/var/mail/testuser文件:
    root@mail:/var/mail# cat testuser
    From testuser@test.com  Sat Jun 11 08:45:00 2022
    Return-Path: 
    X-Original-To: testuser@test.com
    Delivered-To: testuser@test.com
    Received: from unknown (unknown [192.168.11.131])
            by mail.test.com (Postfix) with SMTP id AF0B742C0788
            for ; Sat, 11 Jun 2022 08:44:09 +0800 (CST)
    
    dsfsd
    lkwef
    
    这说明postfix的基本功能已经起来了。
    修改/etc/dovecot/conf.d/10-auth.conf文件,加入以下行:
    disable_plaintext_auth = no
    默认不允许使用明文认证,为了测试dovecot是否能正常读取邮件,先将其设置为允许明文认证。
    然后重启dovecot服务,从客户端telnet到服务器的110端口:
    telnet mail.test.com 110
    +OK Dovecot (Debian) ready.
    user testuser
    +OK
    pass 123456
    +OK Logged in.
    list
    +OK 2 messages:
    1 308
    2 304
    .
    retr 1
    +OK 308 octets
    Return-Path: 
    X-Original-To: testuser@test.com
    Delivered-To: testuser@test.com
    Received: from unknown (unknown [192.168.11.131])
            by mail.test.com (Postfix) with SMTP id AF0B742C0788
            for ; Sat, 11 Jun 2022 08:44:09 +0800 (CST)
    
    dsfsd
    lkwef
    .
    retr 2
    +OK 304 octets
    Return-Path: 
    X-Original-To: testuser@test.com
    Delivered-To: testuser@test.com
    Received: from unknown (unknown [192.168.11.131])
            by mail.test.com (Postfix) with SMTP id 0C23742C097C
            for ; Sat, 11 Jun 2022 08:49:48 +0800 (CST)
    
    abc
    ddd
    .
    quit
    +OK Logging out.
    
    这说明dovecot的基本功能也正常启动了。
    通过以上测试可以确认postfix和dovecot的基本功能都已经起来了。
    默认的邮箱账号就是系统的用户账号,而收到的邮件会保存在/var/mail/目录下,每个用户一个文件,每个文件保存该用户的所有邮件。