在Ubuntu上安装开源邮件服务器-iRedmail

为什么运行邮件服务器?

运行自己的邮件服务器有很多好处。它允许您管理邮箱和附件的大小,运行每小时/每日电子邮件备份,查看邮件日志,并允许您自由使用任何可用的域名。缺点通常是安装所有必要部件的深入且有时复杂的过程。本指南使用简化的流程,即iRedMail安装脚本,并且应该让您在15分钟内启动并运行邮件服务器。

先决条件

在开始本指南之前,您应该知道:

本指南假设您已按照Linode 入门文档进行操作如果尚未执行此操作,请阅读本指南,并在完成“设置主机名”部分后返回此处。

本指南中所需的步骤需要root权限。请务必root使用sudo前缀执行以下步骤。有关权限的更多信息,请参阅我们的用户和组指南。

MX记录

DNS MX记录告诉互联网在哪里发送针对您域的电子邮件。在您的Linode可以接收域中地址的电子邮件之前,必须为该域创建MX记录,指向您的Linode的IP地址。可以在Linode DNS记录简介页面上找到示例MX记录。

安装iRedMail

1 首先,运行以下命令确保您的Linode是最新的:

apt-get update apt-get upgrade

2 检查您的主机名以确保具有子域的FQDN:

hostname hostname -f

iRedMail要求您具有格式正确的完全限定域名(FQDN)。格式是hostname.domain.com。如果您的主机名只是您的域名,则iRedMail将无法正确安装。邮件服务器的常用主机名包括mailmx

user@hostname:~$ hostname mail user@hostname:~$ hostname -f mail.domain.com

3 下载最新版本的iRedMail。截至2014年9月16日的当前版本为0.8.7,可通过输入以下内容进行下载:

cd /root/

wget https://bitbucket.org/zhb/iredmail/downloads/iRedMail-0.8.7.tar.bz2

4 解压缩包并运行脚本:

tar xjf iRedMail-0.8.7.tar.bz2 cd iRedMail-0.8.7 bash iRedMail.sh

安装的其余部分是指屏幕上确认默认选项和选择。除了后端和主机名选择之外,大多数用户只需确认默认选项并继续安装。

注意接下来的几个步骤直接来自iRedMail Ubuntu安装步骤

5 按“enter”键对安装iRedMail说“是”。注意:在步骤#12之前的任何时候按下Ctrl-C将退出安装过程。

6 按“enter”接受/ var / vmail作为默认邮件存储目录

7 使用“向上”和向下箭头键突出显示您的首选后端。按“空格”选择首选选项,然后按“输入”。如果您不确定,请选择MySQL

8 为MySQL root管理员选择密码,然后按“enter”。务必将密码提交到内存或纸张。

9 输入您的域名作为第一个虚拟域名,然后按“输入”。

10 默认情况下,iRedMail将postmaster@yourdomain.com配置为默认管理员。输入iRedMail管理员的密码,然后按“Enter”。

11 下一个屏幕列出了要包含在MySQL后端中的可选组件。虽然这些都不是必需的,但我们建议安装所有组件,因为每个组件的好处都会增加邮件服务器的功能和安全性。

12 此步骤表示配置已完成,引用SENSITIVE配置文件的位置,并询问(y或n)是否要继续。输入“y”。

13 然后,安装程序将下载并安装相应的文件。完成后,您将收到一个提示,询问您是否要使用iRedMail的防火墙规则/etc/default/iptables,并识别您的SSHD端口。键入“y”表示接受,如果要手动配置防火墙,请键入“n”。

14 键入“y”后,安装屏幕将询问您是否要重新启动防火墙。输入“y”。

15 安装现已完成!虽然屏幕的下半部分充满了有用的URL信息和iRedMail提示文件的位置,但有几封电子邮件将在postmaster@yourdomain.com的收件箱中等待。

16 重新启动Linode并导航到https://mail.yourdomain.com/mail“postmaster@yourdomain.com”并登录以检索必要的信息。

17 作为安全预防措施,我们将删除配置文件。成功安装iRedMail后不再需要此文件,并且包含有关邮件服务器配置的敏感信息(用户名/密码)。

rm /root/iRedMail-0.8.7/config

添加用户

iRedMail与一个名为iRedAdmin的邮件服务器帐户配置打包在一起。以下是将用户/邮箱添加到邮件服务器所需的步骤。

  1. 要访问iRedAdmin,请导航至https://yourdomain.com/iredadminpostmaster@yourdomain.com用户并登录。
  1. 加载仪表板页面后,导航到Add下拉列表并选择User
  1. 填写地址,密码,显示名称和邮箱配额块,然后单击“ 添加”将完成该过程。

证书,SPF,DKIM和rDNS

默认情况下,iRedMail为邮件服务器和Web服务器生成密钥和自签名证书。为避免其他电子邮件服务器将来自我们服务器的电子邮件标记为垃圾邮件,我们将安装可信证书。

获取可信证书的过程超出了本指南的范围。您可以按照获取商业SSL证书指南来获取证书。

下一节假设你手头有.key和.crt(或.pem)文件,并准备好了。

注意请务必申请涵盖子域名(mail.yourdomain.com)或域名通配符的证书,以便涵盖所有子域名。

首次登录邮局主管帐户后,您应该有两封电子邮件等着您。第一个标题为“有用链接iRedMail”,第二个标题为“此iRedMail安装的详细信息。”在第二封电子邮件中,我们需要各种文件路径,因为我们将更换SSL证书并需要知道我们的DNS TXT条目的DKIM公钥。首先,证书更换。

注意如果证书颁发者使用的是.pem文件而不是.crt,请务必在下面的说明中替换文件扩展名。

证书

  1. 将证书和密钥移至Linode后,记下其位置。建议安装在与iRedMail默认证书和密钥相同的目录中。证书位于,/etc/ssl/certs/密钥位于/etc/ssl/private/。mv mail.yourdomain.com.crt /etc/ssl/certs/ mv mail.yourdomain.com.key /etc/ssl/private//etc/apache2/sites-available/default-ssl.conf1 2 SSLCertificateFile /etc/ssl/certs/mail.yourdomain.com.crt SSLCertificateKeyFile /etc/ssl/private/mail.yourdomain.com.keysmtpd\_tls\_cert\_file = /etc/ssl/certs/mail.yourdomain.com.crt smtpd\_tls\_key\_file = /etc/ssl/private/mail.yourdomain.com.keyssl\_cert = </etc/ssl/certs/mail.yourdomain.com.crtundefinedssl\_key = </etc/ssl/private/mail.yourdomain.com.keyservice apache2 restart service dovecot restart service postfix restart如果在这些命令期间遇到错误消息,请返回并确认证书的正确路径。
  2. 要替换Apache2使用的证书,请将以下路径替换为default-ssl.conf证书和密钥的位置:
  3. 要替换Postfix使用的证书,请将以下路径替换为main.cf证书和密钥的位置: /etc/postfix/main.cf中
  4. 要替换Postfix使用的证书,请将以下路径替换为dovecot.conf证书和密钥的位置: /etc/dovecot/dovecot.conf
  5. 要将证书更改应用于Web服务器和邮件服务器,请运行以下命令:

SPF,DKIM和rDNS

本节介绍在DNS条目中插入SPF和DKIM记录。SPF记录允许我们指定从我们的域向特定IP地址发送邮件的权限。DKIM记录是另一种证明电子邮件有效性的方法,它允许接收方根据邮件服务器发送的每封电子邮件消息中包含的DKIM密钥检查公钥或邮件服务器的DNS TXT记录。

SPF

  1. 导航到您的DNS提供商,无论您在哪里购买了域名,或者如果您已经转移了DNS,请导航到Linode,并在子域区域中输入以下信息以激活SPF。如果您使用的是Linode的DNS管理器,则可以将名称字段留空,但其他DNS提供商可能会要求您为主机名指定@。
hostname  | ip address/url                | record type | ttl --------  | ----------------------------- | ----------- | ---        @  | v=spf1 ip4:12.34.56.78 -all   | txt         | 1800
  1. 有关更多信息,您可以查看iRedMail推荐的SPF网站链接

DKIM

  1. 在DNS主机记录的同一区域中,添加以下条目以启用DKIM。“p =”后面的IP地址/ url条目是您的公共DKIM密钥,可以在“此iRedMail安装的详细信息”电子邮件中找到,该电子邮件大约在“DKIM支持的DNS记录”部分的下半部分。复制双引号之间的所有内容并放在dkim._domainkey DNS条目的“p =”部分之后。

hostname | ip address/url | record type | ttl -------------- | ------------------- | ----------- | --- dkim._domainkey | v=DKIM1; p=MIGFdfs… | txt | 1800

  1. 测试邮件服务器DKIM的好方法是输入以下命令:

amavisd-new testkeys

你应该收到=> pass输出。

  1. 有关DKIM记录的更多信息,您可以查看iRedMail推荐的DKIM网站链接

RDNS

要设置rDNS,请查看DNS管理器指南的“ 设置反向DNS”部分。这是可选的,但为某些垃圾邮件过滤器的邮件服务器提供额外的可信度。

Cluebringer和AWStats登录的Apache身份验证修复

Cluebringer(又名PolicyD v2)是我们的邮件传输代理Postfix的策略服务器实用程序。它提供了一个基于Web的界面(示例),您可以在其中微调应用于Postfix的策略。有关详细信息,请参阅Policy D 文档

AWStats通过一些基于Web的(或命令行)统计图快速分析和显示日志文件/服务器活动。使用下面列出的配置,它将显示已发送的电子邮件数,电子邮件的总大小,发件人和收件人,时间(每小时/每日/每月)和SMTP错误代码。这里可以看到一个例子。有关详细信息,请参阅AWStats 文档

由于“mod-auth-mysql”无法与Apache 2.4一起使用,默认安装无法使用该模块登录Cluebringer或AWStats。以下是修复,也可以在 iRedMail论坛帖子中找到。

  1. 安装libaprutil1-dbd-mysql:

apt-get install libaprutil1-dbd-mysql

  1. 启用两个dbd apache模块:

a2enmod dbd authn\_dbd

  1. apache2.conf通过将下面的文本块添加到文件末尾进行编辑。确保注释掉文件末尾的现有Auth_MySQL行。#MySQL auth (mod_dbd, libaprutil1-dbd-mysql) <IfModule mod_dbd.c> DBDriver mysql DBDParams "host=127.0.0.1 dbname=vmail user=vmail pass=(SUBSTITUTE WITH YOUR PASSWORD: see in your iRedMail.tips file)" DBDMin 1 DBDKeep 8 DBDMax 20 DBDExptime 300 </IfModule><Directory /usr/lib/cgi-bin/> DirectoryIndex awstats.pl Options ExecCGI AuthType Basic AuthName "Authorization Required" ############################## # mod_auth_mysql (deprecated)# ############################## # AuthBasicAuthoritative Off # AuthUserFile /dev/null # # # Database related. # AuthMySQL_Password_Table mailbox # Auth_MySQL_Username_Field username # Auth_MySQL_Password_Field password # # # Password related. # AuthMySQL_Empty_Passwords off # AuthMySQL_Encryption_Types Crypt_MD5 # Auth_MySQL_Authoritative On # #AuthMySQLUserCondition "isglobaladmin=1" ################# # mod_authn_dbd # ################# # Password related. AuthBasicProvider dbd AuthDBDUserPWQuery "SELECT password FROM mailbox WHERE mailbox.username=%s" Order allow,deny Allow from all Require valid-user </Directory><Directory /usr/share/postfix-cluebringer-webui/webui/> DirectoryIndex index.php AuthType basic AuthName "Authorization Required" ############################## # mod_auth_mysql (deprecated)# ############################## # AuthMYSQL on # AuthBasicAuthoritative Off # AuthUserFile /dev/null # # # Database related. # AuthMySQL_Password_Table mailbox # Auth_MySQL_Username_Field username # Auth_MySQL_Password_Field password # # # Password related. # AuthMySQL_Empty_Passwords off # AuthMySQL_Encryption_Types Crypt_MD5 # Auth_MySQL_Authoritative On ################# # mod_authn_dbd # ################# # Password related. AuthBasicProvider dbd AuthDBDUserPWQuery "SELECT password FROM mailbox WHERE mailbox.username=%s" Order allow,deny Allow from all Require valid-user </Directory>
  2. 编辑awstats.conf以镜像下面的示例文本,添加mod_authn_dbd部分并注释掉该Auth_MySQL部分。 /etc/apache2/conf-available/awstats.conf
  3. 编辑cluebringer.conf以镜像下面的示例文本,添加mod_authn_dbd部分和注释Auth_MySQL部分)。 /etc/apache2/conf-available/cluebringer.conf
  4. 重新启动Apache以使更改生效,然后通过登录Cluebringer或Awstats来测试它们。

service apache2 restart

灰名单建议书

默认情况下,Cluebringer启用灰名单功能。虽然灰名单的实现确实可以保护邮件服务器不接收垃圾邮件,但是它的操作会产生意想不到的后果。这是通过从一个着名的“免费”电子邮件帐户发送几封电子邮件到我的新邮件服务器来测试的。大多数“免费”电子邮件SMTP服务由SEVERAL SMTP服务器提供,当您从服务器接收到4XX回复代码时,由于SMTP服务器的主机名和IP未“已知”,因此会重新传输该电子邮件。但是,通常,重新传输的电子邮件来自另一个主机或来自同一主机,但来自另一个IP地址。Cluebringer的灰名单特征严重延迟或完全否定了一些测试电子邮件。

因此,作者建议关闭此模块。请注意,由于被禁用,在作者的邮件服务器上没有观察到电子邮件的延迟拒绝。此外,邮件服务器尚未收到任何垃圾邮件。

  1. 编辑Cluebringer配置文件(/etc/cluebringer/cluebringer.conf)以禁用灰名单模块。
  2. 搜索术语“灰名单”(不带引号)。
  3. 将“1”更改为“0”以禁用。
  4. 重新启动Cluebringer以完成更改。

service postfix-cluebringer restart

最终测试和结论

作为最后的测试,您可以使用诸如Mail Tester这样的服务来确保您的记录被正确配置。如果你严格遵循了这个指南,你应该会在Mail Tester网站上得到10/10的分数。如果没有,Mail Tester将向您提供一个报告,指出您的配置需要改进的部分。

注意:虽然一些DNS记录几乎立即更新,但更新最多可能需要24小时才能传播。如果您的记录尚未更新,您可能会在这些测试中获得较低分数。

结论

熟悉iRedMail电子邮件和网站中列出的各种文件、配置和设置,并开始向邮件服务器添加用户。快乐地发邮件吧!

原文作者:Nick Reichley

原文地址:https://www.linode.com/docs/email/iredmail/install-iredmail-on-ubuntu/

本文的版权归 阿小庆 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算

在Debian 8上使用Varnish和NGINX通过SSL和HTTP提供WordPress服务

Varnish是一个功能强大且灵活的缓存HTTP反向代理。它可以安装在任何Web服务器的前方来缓存其内容,这将提高速度并减少服务器负载。当客户端请求网页时,Va...

24320
来自专栏贾鹏辉的技术专栏@CrazyCodeBoy

React Native发布APP之签名打包APK

React Native发布APP之签名打包APK ---- 用React Native开发好APP之后,如何将APP发布以供用户使用呢?一款APP的发布流程...

29050
来自专栏安恒信息

安全漏洞公告

1 OpenSSL TLS心跳扩展协议包远程信息泄露漏洞 OpenSSL TLS心跳扩展协议包远程信息泄露漏洞发布时间:2014-04-07漏洞编号:CVE(C...

38760
来自专栏csxiaoyao

利用NextCloud配置私有云

1.2K60
来自专栏Java架构师学习

如何才能让Spring Boot与RabbitMQ结合实现延迟队列

顾名思义,延迟队列就是进入该队列的消息会被延迟消费的队列。而一般的队列,消息一旦入队了之后就会被消费者马上消费。 延迟队列能做什么? 延迟队列多用于需要延迟工作...

37660
来自专栏FreeBuf

初探伪装在Office宏里的反弹Shell

通常的钓鱼邮件场景中office的安全问题一直都受到关注,恶意宏文档制作简单,兼容性强,并且攻击成本较小,所以整体占比较大。但是使用恶意宏进行攻击,往往需要用户...

13620
来自专栏.Net移动开发

关于发布IOS的方法(本人亲身经历折腾很久终于成功)

前情提要:这位.NET程序员兄弟使用Smobiler开发了一个APP,尽管Smobiler云平台已经最大限度的简化了iOS应用的打包操作,但仍绕不开苹果公司强制...

16910
来自专栏Aloys的开发之路

SVN+Apache域用户认证配置方法_Windows(转,重新排版,部分内容更新优化)

背景说明 作为一个团队开发,公司长期以来的实践证明,手工操作版本管理是非常不明智的,一来浪费人力,二来效率低下,三来容易犯错。那么版本管理用什么工具好呢? 在开...

315100
来自专栏容器云生态

监控利器之nagios原理详解

第一节 Nagios简介 nagios是系统管理人员和运维监控人员必须的工具之一,利用nagios可以监控本地或者远程主机资源, 如磁盘空间,系统负载等情况,...

44280
来自专栏Python中文社区

如何简单高效地部署和监控分布式爬虫项目

1、请先确保所有主机都已经安装和启动 Scrapyd,如果需要远程访问 Scrapyd,则需将 Scrapyd 配置文件中的 bind_address 修改为 ...

22440

扫码关注云+社区

领取腾讯云代金券