如何搭建邮箱服务器

这篇具有很好参考价值的文章主要介绍了如何搭建邮箱服务器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

部署

DNS

黑名单

Mailcow:dockerized

部署 Mailcow:dockerized

为 Mailcow:dockerized 配置 TLS

Mailu.io

生成配置文件

部署 Mailu

安全

S/MIME

OpenPGP

推荐阅读


搭建邮局服务器的想法之前一直都有,不过一直没有尝试,国庆的时候从阿里云换到了腾讯云的时候尝试直接使用 postfix 和 dovecot 搭建,尝试了大概3天被劝退了,重新使用现成的解决方案也算终于搭建好了,可以愉快的使用自建邮箱了 (可以愉快的装逼了

更新了 mailu 的搭建,虽然 mailu 相比 mailcow 可以使用宿主机的数据库,不过 mailu 配置 SMTPS / IMAPS / POP3S 不如 mailcow 简单方便,也没怎么研究,目前没有切换到 mailu 的打算

打算在更换服务器之后不再维护邮箱服务,装逼不存在的

部署

开始搭建服务器,以下采用域名 (example.com) 和 IP (1.1.1.1),安装在 /mailcow,使用主机的nginx反向代理,部署之前我们首先定义一些Shell变量,以便之后使用,请根据自己的需求更改

path_to="/path/to"
mailcow_path="${path_to}/mailcow" # mailcow 所在目录
mailu_path="${path_to}/mailu"
mail_host="mail.example.com"
mail_ip="1.1.1.1"
db_user="example_user" # 数据库用户 (Mailu使用宿主机PostgreSQL时使用)
db_passwd="example_password" # 数据库密码 (Mailu使用宿主机PostgreSQL时使用)
db_name="example_db" # 数据库名称  (Mailu使用宿主机PostgreSQL时使用)
http_port="8080"
https_port="8443"
cert_path="/ssl/path/to/cert/" # 证书存放目录
cert_file="${cert_path}/cert.pem" # 域名证书
key_file="${cert_path}/key.pem" # 域名证书密钥
ca_file="${cert_path}/intermediate_CA.pem" # 域名证书颁发者证书

 另外,由于webmail对 S/MIME 与 PGP/MIME 的支持并不好,我们将在服务器上禁止 webmail,使用本地的邮件客户端收发邮件,以便更好的使用加密、签名功能,如有需要请自行开启webmail。

 文章来源地址https://www.toymoban.com/news/detail-768209.html

DNS

DNS设置是一个邮件服务器的重中之重,为了让我们可以发出邮件和收到邮件,防止邮件被拒收或者进入垃圾箱被识别成垃圾邮件等,当然不是配置好了就不会进垃圾邮箱,不配置肯定会有问题。

除了上述DNS解析之外,还需要配置 DKIM 和 PTR,DKIM在我们搭建好服务之后配置, PTR需要向运营商提交工单申请 (阿里云和腾讯云是这样的),如果你没有配置ptr解析那么你可能会上一些黑名单。

DKIM 同样的也是 TXT 类型的 DNS 解析,在部署完成后由指定选择器生成 DKIM,之后设置 DNS 解析

搭建邮件服务器,知识分分享,服务器,运维,开发语言,网络协议,linux

 

黑名单

在互联网上发送邮件不是可以为所欲为的,邮局服务有一套反垃圾邮件机制,当你的IP上了黑名单时,从这个IP发出去的邮件很容易进入垃圾邮箱或拒收,请珍惜自己的IP,不过可以尝试在检测上了哪些服务商的黑名单,并尝试解除黑名单,以下给出一些检测或申请去除反垃圾邮件网址

  • MXToolBox
  • MultiRBL.valli.org - Blacklist, Whitelist and FCrDNS check tool

 

Mailcow:dockerized

Mailcow:dockerized 是一个使用docker搭建的标准邮件服务器,集成了邮局、webmail、管理以及反垃圾邮件等功能,过程相对全面,不过缺点是比较吃资源,并且不支持 Synology/QNAP 或 OpenVZLXC 等虚拟化方式,并且不能使用 CentOS 7/8 源中的 Docker 包,要求真多。。。消耗资源的主要原因是 ClamAV 和 Solr,即杀毒功能和搜索功能,如果不需要可以关闭。

搭建邮件服务器,知识分分享,服务器,运维,开发语言,网络协议,linux

 以下列出Mailcow:dockerized使用的端口 (HTTP和HTTPS为我们自定义的端口)

搭建邮件服务器,知识分分享,服务器,运维,开发语言,网络协议,linux

 

部署 Mailcow:dockerized

现在开始正式的搭建邮箱服务器

cd ${path_to}
git clone https://github.com/mailcow/mailcow-dockerized mailcow && cd mailcow
echo ${email_host} | ./generate_config.sh
sed -ie "s/HTTP_PORT=.*/HTTP_PORT=${http_port}/" mailcow.conf # HTTP端口
sed -ie "s/HTTPS_PORT=.*/HTTPS_PORT=${https_port}/" mailcow.conf # HTTPS端口
sed -i "s/TZ=.*/TZ=Asia\/Shanghai/" mailcow.conf # 时区
sed -i "s/SKIP_LETS_ENCRYPT=.*/SKIP_LETS_ENCRYPT=y/" mailcow.conf # 证书申请 (不需要)
sed -i "s/SKIP_SOGO=.*/SKIP_SOGO=y/" mailcow.conf # webmail (不需要)
sed -i "s/SKIP_SOLR=.*/SKIP_SOLR=n/" mailcow.conf # 搜索 (不需要)
sed -i "s/enable_ipv6: true/enable_ipv6: false/" docker-compose.yml # 关闭ipv6

 下面给出Nginx配置文件,Apache 配置文件请参见 官方文档

server {
  listen 80;
  listen [::]:80;
  server_name mail.example.com;
  return 301 https://$host$request_uri;
}
server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name mail.example.com;

  ssl_certificate /ssl/domain/cert.pem;
  ssl_certificate_key /ssl/domain/key.pem;
  ssl_session_timeout 2h;
  ssl_session_cache shared:mailcow:16m;
  ssl_session_tickets off;

  # See https://ssl-config.mozilla.org/#server=nginx for the latest ssl settings recommendations
  # An example config is given below
  ssl_protocols TLSv1.2 TLSv1.3;
  ssl_ciphers HIGH:!aNULL:!MD5:!SHA1:!kRSA;
  ssl_prefer_server_ciphers off;

  location /Microsoft-Server-ActiveSync {
    proxy_pass http://127.0.0.1:8080/Microsoft-Server-ActiveSync;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_connect_timeout 75;
    proxy_send_timeout 3650;
    proxy_read_timeout 3650;
    proxy_buffers 24 256k;
    client_body_buffer_size 512k;
    client_max_body_size 0;
  }

  location / {
    proxy_pass http://127.0.0.1:8080/;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    client_max_body_size 0;
  }
}

以上全部完成后,mailcow 基本配置完成,只需要启动起服务即可,默认用户密码 admin / moohoo

cd ${mailcow_path}
docker-compose pull
docker-compose up -d

 

为 Mailcow:dockerized 配置 TLS

现在我们可以为SMTP与IMAP服务加入TLS,假设我们已经对域名 mail.example.com 申请了证书,对 postfix 与 dovecot 配置证书前,我们需要根据 postfix 文档先将我们自己的证书与提供商的证书按顺序存放在同一文件下,并且文件后缀为 .pem,并存放在 mailcow的ssl文件夹下

cat ${cert_file} ${ca_file} > ${mailcow_path}/data/assets/ssl/cert.pem
cp ${key_file} ${mailcow_path}/data/assets/ssl/key.pem

 证书保存完毕后,对 postfix 与 dovecot 进行配置,配置完成重启服务即可

# postfix
sed -i "s/smtp_tls_security_level.*/smtp_tls_security_level = dane/" data/conf/postfix/main.cf
sed -i "s/smtp_tls_CAfile.*/smtp_tls_CAfile = \/etc\/ssl\/mail\/cert.pem/" data/conf/postfix/main.cf
sed -i "s/smtp_tls_cert_file.*/smtp_tls_cert_file = \/etc\/ssl\/mail\/cert.pem/" data/conf/postfix/main.cf
sed -i "s/smtp_tls_key_file.*/smtp_tls_key_file = \/etc\/ssl\/mail\/key.pem/" data/conf/postfix/main.cf
sed -i "s/smtpd_tls_security_level.*/smtpd_tls_security_level = may/" data/conf/postfix/main.cf
sed -i "s/smtpd_tls_CAfile.*/smtpd_tls_CAfile = \/etc\/ssl\/mail\/cert.pem/" data/conf/postfix/main.cf
sed -i "s/smtpd_tls_cert_file.*/smtpd_tls_cert_file = \/etc\/ssl\/mail\/cert.pem/" data/conf/postfix/main.cf
sed -i "s/smtpd_tls_key_file.*/smtpd_tls_key_file = \/etc\/ssl\/mail\/key.pem/" data/conf/postfix/main.cf
# dovecot
sed -i "s/ssl_cert.*/ssl_cert = <\/etc\/ssl\/mail\/cert.pem/" data/conf/dovecot/dovecot.conf
sed -i "s/ssl_key.*/ssl_key = <\/etc\/ssl\/mail\/key.pem/" data/conf/dovecot/dovecot.conf
# restart
docker-compose restart postfix-mailcow dovecot-mailcow

 

Mailu.io

Mailu 是一个使用docker搭建的轻量级标准邮件服务器,继承自poste.io,支持x86架构,集成了邮局、webmail、管理以及反垃圾邮件等功能。webmail可以选用roundcube、 rainloop或禁止webmail,而数据库支持sqlite、MySQL与PostgreSQL,最重要的是 MySQL 和 PostgreSQL 可以选择使用镜像或宿主机 (1.9开始将删除docker镜像)。

搭建邮件服务器,知识分分享,服务器,运维,开发语言,网络协议,linux

 

生成配置文件

Mailu官方提供了 在线生成配置文件,可以根据我们的需求生成配置文件,我们将使用 Docker-Compose 搭建 master 版本,并将生成的配置文件下载到服务器上。

initial configuration

进行初始化的配置,比如路径、主域名、TLS、管理界面等,由于我个人喜好自己生成 TLS证书,所以选择 mail 禁止mailu帮我生成证书,但是对邮件进行TLS加密,如果需要mailu生成TLS证书选择带有 letsencrypt 的选项

搭建邮件服务器,知识分分享,服务器,运维,开发语言,网络协议,linux

 

pick some features

        进行功能配置,我们禁用了webmail,可以根据个人喜好选择合适自己的webmail。剩下的三个选项分别是杀毒 (内存杀手)、WebDAV以及邮件代收,根据自己的需求选择

搭建邮件服务器,知识分分享,服务器,运维,开发语言,网络协议,linux

 

expose Mailu to the world

        配置IP与主机名,监听地址填写自己的服务器IP,hostname填写服务器的长主机名

搭建邮件服务器,知识分分享,服务器,运维,开发语言,网络协议,linux

 

database preferences

        数据库设置,这里我们选择使用宿主机的PostgreSQL,URL填写的是Docker在宿主机上默认开启的子网

搭建邮件服务器,知识分分享,服务器,运维,开发语言,网络协议,linux

 

部署 Mailu

现在开始正式的搭建邮箱服务器,假设你已经将配置文件下载到了 mailu_path 中,我们修改一下配置文件

sed -ie "s/MESSAGE_SIZE_LIMIT=.*/MESSAGE_SIZE_LIMIT=100000000/" mailu.env
sed -i "/::1/d" docker-compose.yml
sed -ie "s/${mail_ip}://g" docker-compose.yml
sed -ie "s/80:80/${http_port}:80/" docker-compose.yml # HTTP端口
sed -ie "s/443:443/${https_port}:443/" docker-compose.yml # HTTPS端口

因为mailu配置的TLS选项是mail,所以我们使宿主机的Nginx反向代理到mailu-front监听的 HTTP上即可

server {
  listen 80;
  listen [::]:80;
  server_name mail.example.com;
  return 301 https://$host$request_uri;
}
server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name mail.example.com;

  ssl_certificate /ssl/domain/cert.pem;
  ssl_certificate_key /ssl/domain/key.pem;
  # See https://ssl-config.mozilla.org/#server=nginx for the latest ssl settings recommendations
  ssl_protocols TLSv1.2 TLSv1.3;
  ssl_ciphers HIGH:!aNULL:!MD5:!SHA1:!kRSA;
  ssl_prefer_server_ciphers off;
  ssl_session_timeout 2h;
  ssl_session_cache shared:mailu:8m;
  ssl_session_tickets off;

  proxy_set_header Host $http_host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto $scheme;

  location / {
    proxy_pass http://127.0.0.1:8080/;
  }
  location /admin {
    proxy_pass http://127.0.0.1:8080/admin/;
  }
  # location /webmail {
  #   proxy_pass http://127.0.0.1:8080/webmail/;
  # }
}

宿主机的PostgreSQL也需要稍微配置一下

sudo adduser --disabled-login --gecos 'Mailu' ${db_user}
sudo -u postgres -H psql -d template1 -c "CREATE USER ${db_user} WITH PASSWORD '${db_passwd}' CREATEDB;"
sudo -u postgres -H psql -d template1 -c "CREATE DATABASE ${db_name} OWNER ${db_user};"
sudo -u postgres -H psql -h localhost -d ${db_name} -c "create extension citext;"
echo "host    ${db_name}    ${db_user}    192.168.203.0/24    md5" >> /etc/postgresql/12/main/pg_hba.conf
sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '0.0.0.0'/" /etc/postgresql/12/main/postgresql.conf
systemctl restart postgresql

 以上全部完成后 mailu 基本配置完成,只需要根据最后一步,启动起服务并设置管理员密码即可

cd ${mailu_path}
docker-compose -p mailu up -d
docker-compose -p mailu exec admin flask mailu admin admin ${mail_host#*.} PASSWORD

 

安全

我们已经配置了TLS,对于邮件的传输过程来说我们的邮件是安全的,但是对于服务提供商来说还是可以随意浏览我们的邮件内容的,如果你希望重要的内容不被服务商所浏览,可以尝试使用对邮件加密的方式。邮件加密并不是将邮件转换为一个带密码的文件,而是使用非对称加密套件,在MUA中进行加密、签名等,MTA只负责传输邮件而不能检测邮件的内容。如果你想使用加密的方式向我发送邮件,请保存以下公钥:

  • OpenPGP
  • S/MIME (iris@ginshio.org)
  • S/MIME (ginshio78@gmail.com)

由于加密邮件是MUA行为,一般情况服务提供商的Webmail并不支持加密邮件,部分提供加密功能的提供商如果需要你上传私钥到他们的服务器,请保持警惕,私钥可以解密你的邮件。以下列出了常见的支持加密的MUA:

  • Microsoft Outlook (S/MIME)
  • Apple Mail (S/MIME)
  • Mozilla Thunderbird (OpenPGP 和 S/MIME)
  • KDE Kontact KMail (OpenPGP 和 S/MIME)
  • GNOME Evolution (OpenPGP 和 S/MIME)
  • Mutt (OpenPGP 和 S/MIME)

S/MIME

安全多功能互联网邮件扩展 (S/MIME) 是基于 PKI 的符合 X.509 格式的非对称密钥协议,提供了数字签名、加密功能。发送邮件时,数字签名会以 smime.p7s 的附件跟随邮件发送,如GMail的网页端就支持验证签名,如果是加密邮件则整封邮件被加密后以 smime.p7m 的附件发送。双方互发信息之前,如果没有对方公钥那么无法加密邮件,需要先互相发送签名的邮件用以交换公钥,导入公钥后可以开始发送加密邮件。你可以在 Actalis 申请为期一年的免费 S/MIME 证书,为你邮件加密开启第一步,请保存好申请到的证书 (.pfx文件)、密码以及CRP。

从 Actalis 申请来的 S/MIME 证书是 PKCS #12 格式,这种格式被称为 安全包裹 ,通常这种文件用于打包私钥以及有关的 X.509 证书。我们可以使用 openssl 的 pkcs12 进行创建、解析、读取。

如果需要查看安全包裹信息,可以使用如下命令,这会输出所有证书和私钥

openssl pkcs12 -in file -info -nodes

 如果你希望将私钥加密输出,可以去除 -nodes 参数,下表举例了输出 PKCS12 文件信息时的一些控制参数

搭建邮件服务器,知识分分享,服务器,运维,开发语言,网络协议,linux

 

对于导出到文件,可以添加 -out 参数来指定导出的文件,依然可以使用 -nokeys 与 -nocerts 来决定导出的是证书还是密钥,导出密钥时记得不要加密密钥

OpenPGP

OpenPGP标准是一种非对称的非对称密钥协议,提供了加密、签名等工程,OpenGPG是通过信任网络机制确保之间的密钥认证。相比于 S/MIME 而言,OpenGPG 在邮件方便被支持的更少,比如Gmail可以在webmail中验证S/MIME签名,但是并不支持 PGP/MIME。

推荐阅读

  • Outlook 反垃圾邮件策略指南
  • SPF 记录:原理、语法及配置方法简介
  • DMARC 是什么?
  • 了解 S/MIME
  • 电子邮件加密指南
  • 在 Thunderbird 中使用 OpenPGP —— 怎么做以及问题解答
  • Mailcow:dockerized官方文档
  • 使用 mailcow:dockerized 搭建邮件服务器
  • Mailu.io官方文档

 

 

到了这里,关于如何搭建邮箱服务器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CentOS 7下Postfix邮件服务器搭建

    硬件环境: Linux服务器一台,IP地址:192.168.80.10; WIN7客户端一台,拥有OUTLOOK2013,测试用,与服务器在同一局域网内。 一:搭建DNS服务器 二:搭建postfix服务器及普通发信 三:普通收信 四:认证收信 五:squirrelmail收发邮件(小松鼠邮件的安装与配置) 六:邮件群发功能配

    2024年02月10日
    浏览(16)
  • 超详细的Windows搭建hMailServer开源邮件服务器

    hMailServer是开源的邮件服务器软件,免费提供下载使用;而Microsoft Exchange是商业软件,通常需要购买授权来使用。两者相对来说,取决于您的需求和组织的规模。如果您是中小型企业组织或者是个人用户,并且希望后期维护的工作简单、又拥有一套免费的邮件服务器解决方案

    2024年02月04日
    浏览(17)
  • 教你用docker搭建自己的邮件服务器-Ewomail

    EwoMail 官方文档 EwoMail-Admin版本为1.05 rainloop 版本为1.11.1 运行docker mail.ewomail.com 换成自己的域名 docker-compose方式 或 可配置参数 MYSQL_ROOT_PASSWORD mysql数据库root密码,默认:mysql MYSQL_MAIL_PASSWORD mysql数据库ewomail密码,默认:123456 URL 网站链接,后面不要加/线 WEBMAIL_URL 邮件系统链接

    2024年02月08日
    浏览(16)
  • hMailServer 使用教程 —— 手把手教你搭建自己的邮箱服务器

    前言 假设你已经拥有了一台具有 公网ip 的服务器,以及 域名 hMailServer 介绍 hMailServer 适用于 Windows 操作系统,它除了提供邮箱系统需要的所有基础功能之外,还内置了一些常用功能,比如:反垃圾邮件、反病毒邮件,而其他未内置的功能,则可以根据用户需要,自行去社区

    2024年02月04日
    浏览(24)
  • 群晖免费邮件服务器Mail Server搭建心德

    2023年1月2日 Daniel.y 群晖Synology Mail Server可以用于搭建免费的企业邮箱,不限用户数也不限邮箱容量。常规的安装流程在群晖的官方网站中有介绍,在此就不再赘述。这里主要介绍一些注意事项和疑难问题解决经验。 搭建自己的邮箱服务器面临最大的挑战是如何防止收到垃圾邮

    2024年02月07日
    浏览(37)
  • Linux系统下邮件服务器的搭建(Postfix+Dovecot+SSL)

    系统环境为 centos7.2 x64 mini 1.首先安装编译环境包  2.开始编译安装postfix     a.创建相关用户     b.编译安装     在make install环节的时候会有个交互式的界面,可以自定义一些目录,根据自己的需求填写,本人这里只更改了第二项临时文件目录,其他的都选择了默认目录

    2023年04月08日
    浏览(11)
  • 【Linux】邮件服务器搭建 postfix+dovecot+mysql (终极版 超详细 亲测多遍无问题)

    🍁 博主简介   🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊 交流社区: 运维交流社区 欢迎大家的加入! 因为最近公司需要搭建一个邮件服务系统,但是如果在linux创建的话会有uid限制,而又需要创建大量的用户,上

    2024年02月15日
    浏览(19)
  • 【知识分享】高防服务器的防御机制

    【知识分享】高防服务器的防御机制 易受到攻击的网站选择接入高防服务更安全,大家对于这个都清楚!但是对于高防服务如何实现防御来保障安全的,又了解多少呢?今天壹基比小源(贰伍壹叁壹叁壹贰玖捌)就来说说高防服务实现防御的常规方法一般有以下几点: 1.定期扫

    2024年02月13日
    浏览(17)
  • 幻兽帕鲁服务器搭建及命令分享

    《幻兽帕鲁》是一款支持多人游戏模式的全新开放世界生存制作游戏。游戏中玩家可以搭建服务器,和朋友们一起游玩。私人服务器的搭建方法具体如下。 具体步骤: 1.下载steamcmd, windows平台可以直接前往官网下载: 中文维基教程 2.将steamcmd下载路径设定至环境变量path, 或使用

    2024年01月25日
    浏览(19)
  • 搭建幻兽帕鲁服务器详细教程分享

    幻兽帕鲁PalWorld是一款由Pocketpair开发的游戏,融合了多种玩法,其独特的题材和画风吸引了很多玩家。为了更好地进行游戏体验,很多玩家选择自行搭建服务器。本文将详细介绍如何搭建幻兽帕鲁PalWorld服务器。 阿里云提供快速、简化的服务器搭建方案,新手小白0基础1分钟

    2024年02月20日
    浏览(15)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包