利用免费版Extmail快速搭建自己的邮件服务器

【声明】本文为AdamsLee原创,转载请注明出自围炉网并保留本文有效链接:利用免费版Extmail快速搭建自己的邮件服务器, 转载请保留本声明!

Extmail官网地址https://www.extmail.org ,是开源免费的高性能Webmail软件,主要包括ExtMail、Extman两个部分的程序套件。在进行企业OA系统的调研时发现很多系统往往需要与邮件服务器配合使用,因此把自己如何快速搭建邮件服务器的过程记录下来方便大家参考。

  • 部署环境

docker环境可以免除很多环境依赖的问题,且Docker Hub上有人已经上传了可用的镜像。因此这里采用docker的方式进行部署,为了运行更加方便,建议使用docker compose。即部署环境需要一台支持docker-compose的机器。

  • docker compose脚本文件

version: '3'
services:
  mail:
    image: palidin/extmail:latest
    hostname: mx.example.com
    container_name: extmail
    ports:
    - "25:25"
    - "110:110"
    - "143:143"
    - "80:80"
    privileged: true
    environment:
      EXTMAIL_LANG: en_US
    volumes:
    - /Users/adamslee/docker/extmail/vmail:/home/domains
    - /Users/adamslee/docker/extmail/database:/var/lib/mysql/extmail

其中EXTMAIL_LANG 可以根据需要改成zh_CN, volumes需要根据自己的环境提前创建好目录,并调整上面的脚本文件中的目录路径

  • 运行docker compose

运行命令 : docker-compose up -d

  • 配置邮件服务器

访问 http://{IP}/extman,登录管理员账号 root@extmail.org, 密码 extmail*123*

    • 添加邮件服务器域名

系统默认的域名是extmail.org,点击上方Domains菜单,可以根据自己的需要添加对应的域名,例如 abc.com

    • 添加邮箱用户

点击上方User菜单,然后在右上方的列表框中选择新建的域名,再点击列表框右侧的Add User链接进入添加用户的界面。输入对应需要创建的用户名(例如 Alex)和密码,点击Save Change按钮完成创建。

  • 登录邮箱

访问 http://{IP}/extmail,使用刚才创建的邮箱用户登录,用户名不需要"@abc.com",在下方的Domain输入框中输入域名"abc.com", 点击Login按钮即可登录

  • 使用代码测试SMTP调用

最后还可以使用一小段python代码测试一下是否可以调用

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
import smtplib
def _format_addr(s):
    name, addr = parseaddr(s)
    return formataddr((Header(name, 'utf-8').encode(), addr))
from_addr = input('From: ')
password = input('Password: ')
to_addr = input('To: ')
smtp_server = input('SMTP server: ')
smtp_port = input('SMTP port(通常情况端口号是25): ')
msg = MIMEText('hello, send by Python...', 'plain', 'utf-8')
msg['From'] = _format_addr('Python爱好者 <%s>' % from_addr)
msg['To'] = _format_addr('管理员 <%s>' % to_addr)
msg['Subject'] = Header('来自SMTP的问候……', 'utf-8').encode()
server = smtplib.SMTP(smtp_server, smtp_port)
server.set_debuglevel(1)
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr], msg.as_string())
server.quit()


此条目发表在未分类分类目录。将固定链接加入收藏夹。