Poste.io简介

官网:Poste.io

Poste.io是一款SMTP+IMAP+POP3+反垃圾邮件+防病毒+Web管理+Web电子邮件集一体的开源邮件服务器

特点:

  • SPF、DKIM、DMARC、SRS的原生实现,带有简单的向导
  • 可检测特洛伊木马、病毒、恶意软件
  • 内置垃圾邮件过滤器
  • 带有HTTPS的网络邮件客户端
  • 电子邮件重定向,自动回复和通过Sieve脚本过滤
  • 可限制邮件空间及电子邮件数量
  • 对系统管理员、域管理员、电子邮件所有者具有不同权限的Web管理
  • 内置微软产品的自动发现功能
  • 内置邮件服务器的诊断功能
  • 支持邮件TLS(SMTPS、POP3S、IMAPS)
  • 默认情况使用SHA512算法加密,防止密码被黑客破解
  • 可使用Docker部署并与其他应用程序隔离

邮件原理

电子邮件结构

  1. 用户代理UA

    用户与电子邮件系统的接口,具有编写、显示、邮件处理、通信等功能。例如:Foxmail

  2. 邮件服务器

    邮件服务器是邮件系统的核心,用于发送和接受邮件,向发送人报告邮件传递情况,同时充当客户和服务器

  3. 电子邮件使用的协议

    • STMP协议

      STMP客户端主动将邮件推到SMTP服务器端

    • POP3协议

      用户代理向邮件服务器发出请求,拉去用户邮箱中的邮件

电子邮件格式

  1. 电子邮件格式

    • 信封

      用户写好首部后,系统自动将信封所需信息提取到信封上

    • 内容

      • 首部
        • 包含一些首部行,由一个字典组成
        • To: 收件人邮箱(一个或多个)
        • Subject: 邮件的主题(可选)
        • From: 由系统自动填入
        • 首部和主体之间使用一个空格进行分割
      • 主体
        • 用户自己编写
  2. MIME(多用途网际邮件扩充)

    • SMTP的缺点

      只能传送7位的ASCII码,其他非英语国家的文字无法传送

      无法传送可执行文件/二进制对象

      SMTP服务器拒绝超过一定长度的邮件

    • MIME意图

      并未改变SMTP或取代,继续使用目前的格式,增加了邮件主体的结构

      定义了传送非ASCII码的编码规则,可在现有的电子邮件程序和协议下传送

    • 三部分内容

      五个新的邮件首部字段(MIME版本、内容描述、内容标识、内容传送编码、内容类型)

      定义更多的邮件内容的格式

      定义传送编码,可对任何内容格式进行转换,不被邮件系统改变

SMTP/POP3

  1. SMTP协议

    • 特点

      提供可靠有效的电子邮件传输协议,客户/服务器方式,使用TCP协议

    • 三个阶段

      连接建立

      邮件传递

      连接释放

  2. POP3协议

    • 特点

      简单且非常有限的邮件读取协议,拉取邮件

    • 两种工作模式

      下载并保留/下载并删除

      img

  3. IMAP协议

    • 比POP协议复杂,可以看到首部,当用户需要时,该邮件才上传到用户计算机中
    • 可以让用户在不同的地方使用不同的计算机随时处理邮件
  4. 基于万维网的电子邮件

    • 用户浏览器与电子邮件服务器之间发送/接收邮件使用HTTP协议,仅在不同邮件服务器之间使用SMTP协议

    img

邮件端口

端口号 作用
25 SMTP-主要用于处理接收邮件
80 HTTP
110 POP3-用于访问邮件的标准协议
143 IMAP-用于访问邮件的标准协议
443 HTTPS
465 SMTPS-传统SMTP端口
587 MSA-SMTP端口主要用于STARTTLS和身份验证之后的电子邮件客户端
993 IMAP-自连接以来加密的IMAP的备用端口
995 POP3S-自连接以来加密的POP3
4190 筛子

部署邮件

  1. 安装Docker(略)

  2. 启动容器

    1
    2
    3
    4
    5
    6
    7
    8
    9
    [root@xiaowangc ~]# docker run -itd \
    -e TZ=Asia/Shanghai \ # 设置时区
    -e HTTPS=OFF \ # 关闭HTTPS,这里是因为我使用了代理
    -e HTTP_PORT=11111 \ # 更改HTTP默认端口,因为我的代理服务器占用了80端口
    -v /root/email/data:/data \ # 数据持久化
    --name "mailserver" \ # 容器名称
    -h "mail.xiaowangc.com" \ # 主机名
    -p 25:25 -p 110:110 -p 143:143 -p 587:587 -p 993:993 -p 995:995 -p 465:465 -p 11111:11111 \ # 需要暴露的端口
    -t analogic/poste.io

    其他参数:

    1
    2
    3
    4
    -e "HTTPS_PORT" 						# 更改HTTPS端口
    -e "DISABLE_CLAMAV=TRUE" # 禁用ClamAV病毒查杀,可降低内存使用率
    -e "DISABLE_RSPAMD=TRUE" # 禁用Rspamd反垃圾邮件系统,可降低内存使用率
    -e "DISABLE_ROUNDCUBE=TRUE" # 禁用Web电子浏览器
  3. 配置DNS解析

    配置A记录解析mail.xiaowangc.com的邮件服务器域名

    image-20221216102820038

    配置MX记录指定邮件服务器

    image-20221216102904064