本文教你如何安装及使用iRedMail在Ubuntu 18.04操作系统上设置全功能邮件服务器。iRedMail是一个shell脚本,可以自动安装和配置Linux/BSD服务器上所有必需的邮件服务器组件,从而消除了手动安装和配置,使用iRedMail,你可以在基于Web的管理面板中轻松创建任意数量的邮箱,邮箱可以存储在MariaDB/MySQL、PostreSQL数据库或OpenLDAP中(参考:在Ubuntu 18.04系统中安装OpenLDAP服务器的方法)。
第1步:创建DNS MX记录 MX记录指定哪个或多个主机处理特定域名的电子邮件。 在DNS管理器中,为你的域名创建MX记录,在“名称”字段中输入@表示主域名,然后在“值”字段中输入mail.your-domain.com,请自行更改your-domain.com,比如云网牛站的域名是ywnz.com,如:
注意:MX记录的主机名不能是其他名称的别名,此外,强烈建议使用主机名,而不是裸记录的IP地址。 你的DNS管理员可能会要求你输入首选项值(即优先级值),它可以是0到65,356之间的任何数字,少数优先级高于大数字,可以为电子邮件服务器输入0,或接受默认值,创建MX记录后,还需要为mail.your-domain.com创建A记录,以便将其解析为IP地址,如果你的服务器使用IPv6地址,请务必添加AAAA记录。
第2步:配置主机名 SSH进入你的服务器,然后更新软件包: sudo apt update sudo apt upgrade 然后使用以下命令为服务器设置完全限定的域名(FQDN): sudo hostnamectl set-hostname mail.your-domain.com 我们还需要更新/etc/hosts文件: sudo nano /etc/hosts 编辑如下: 127.0.0.1 mail.your-domain.com localhost 保存并关闭文件,要查看更改,请重新登录,然后运行以下命令以查看主机名: hostname -f
第3步:安装及使用iRedMail在Ubuntu 18.04上设置邮件服务器 运行以下命令,使用wget下载iRedMail Bash安装程序,本文用的是iRedMail 0.9.8版本: wget https://bitbucket.org/zhb/iredmail/downloads/iRedMail-0.9.8.tar.bz2 也可以用iRedMail-0.9.9.tar.bz2,如下: wget https://bitbucket.org/zhb/iredmail/downloads/iRedMail-0.9.9.tar.bz2 提取tarball: tar xvf iRedMail-0.9.8.tar.bz2 或0.9.9版本:tar xvf iRedMail-0.9.9.tar.bz2 然后cd进入新创建的目录: cd iRedMail-0.9.8/ 或0.9.9版本:cd iRedMail-0.9.9/ 向iRedMail.sh脚本添加可执行权限: chmod +x iRedMail.sh 接下来,使用sudo权限运行Bash脚本: sudo bash iRedMail.sh 将出现基于ncurse的设置向导,选择是,然后按Enter键:
下一个页面将要求你选择邮件存储路径,可以使用默认的/var/vmail,只需按Enter即可:
然后选择是否要运行Web服务器,强烈建议选择运行Web服务器,因为需要基于Web的管理员来添加电子邮件帐户,它还允许你访问Roundcube webmail,默认情况下,选择Nginx Web服务器,因此你只需按Enter即可(星号表示该项目已被选中):
然后选择存储后端,选择一个你熟悉的,本文选择了MariaDB(参考:在Ubuntu 18.04/18.10系统上安装MariaDB 10.3.13稳定版本),按向上和向下箭头键,然后按空格键进行选择:
如果选择了MariaDB或MySQL,则需要设置MySQL root密码:
请注意,如果选择了MariaDB,则无需密码即可登录MariaDB shell,可以运行以下命令来登录,而不是运行正常命令mysql -u root -p,而无需提供MariaDB root密码: sudo mysql -u root 这是因为Ubuntu 18.04上的MariaDB软件包使用unix_socket认证插件,允许用户使用操作系统帐户连接到MariaDB,但你仍需要在iRedMail设置向导中设置root密码。 接下来,输入你的第一个邮件域,可以稍后在基于Web的管理面板中添加其他邮件域,本文假设你需要一个像john.doe@your-domain.com这样的电子邮件帐户,在这种情况下,需要在此处输入your-domain.com,不需要子域,请勿在域名后按空格键,我认为iRedMail会将空格字符与你的域名一起复制,这可能导致安装失败:
接下来,为邮件域管理员设置密码:
选择可选组件,默认情况下,选择4个项目,如果想要SOGo组件,请选择它并按Enter键:
现在,可以查看配置,键入Y以开始安装所有邮件服务器组件:
在安装结束时,选择y以使用iRedMail提供的防火墙规则并重新启动防火墙:
参考:Debian、Ubuntu、Linux Mint系统中的UFW防火墙入门教程。 现在iRedMail安装完成,你将收到Webmail,SOGo组件和Web管理面板的URL以及登录帐户的通知,iRedMail.tips文件包含有关iRedMail服务器的重要信息:
重新启动你的Ubuntu 18.04服务器: sudo shutdown -r now 服务器重新联机后,可以访问Web管理面板,地址如下: https://mail.your-domain.com/iredadmin/ 由于它使用的是TLS证书,所以要开启443端口支持。
第4步:安装Let的加密TLS证书 由于邮件服务器使用的是自签名TLS证书,因此桌面邮件客户端用户和Webmail客户端用户都会看到警告,要解决此问题,我们可以获取并安装免费的Let's Encrypt TLS证书。 1、获得证书 首先,在Ubuntu 18.04上安装Let的Encrypt(certbot)客户端: sudo apt install software-properties-common sudo add-apt-repository ppa:certbot/certbot sudo apt install certbot 参考:使用Certbot:在Linux上安装letsencrypt的最简单方法。 iRedMail已经在默认的Nginx虚拟主机中配置了TLS设置,因此我建议使用webroot插件而不是nginx插件来获取证书,运行以下命令,请替换your-email-address及mail.your-domain.com: sudo certbot certonly --webroot --agree-tos --email your-email-address -d mail.your-domain.com -w /var/www/html/ 当它询问是否要接收EFF的通讯时,可以选择否:
如果一切顺利,将成功获得TLS证书,你的证书和链已保存在/etc/letsencrypt/live/mail.your-domain.com/目录中。 2、在Nginx中安装证书 获得TLS证书后,让我们配置Nginx Web服务器以使用它,编辑SSL模板文件: sudo nano /etc/nginx/templates/ssl.tmpl 找到以下2行: ssl_certificate /etc/ssl/certs/iRedMail.crt; ssl_certificate_key /etc/ssl/private/iRedMail.key; 替换为: ssl_certificate /etc/letsencrypt/live/mail.your-domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/mail.your-domain.com/privkey.pem; 保存并关闭文件,然后测试nginx配置并重新加载: sudo nginx -t sudo systemctl reload nginx 再次访问iRedMail管理面板,你的网络浏览器不会再发出警告,因为Nginx现在使用的是有效的TLS证书:
3、在Postfix和Dovecot中安装TLS证书 我们还需要配置Postfix SMTP服务器和Dovecot IMAP服务器以使用Let's Encrypt颁发的证书,以便桌面邮件客户端不会显示安全警告,编辑Postfix的主配置文件: sudo nano /etc/postfix/main.cf 找到以下3行(第95,96,97行): smtpd_tls_key_file = /etc/ssl/private/iRedMail.key smtpd_tls_cert_file = /etc/ssl/certs/iRedMail.crt smtpd_tls_CAfile = /etc/ssl/certs/iRedMail.crt 替换为: smtpd_tls_key_file = /etc/letsencrypt/live/mail.your-domain.com/privkey.pem smtpd_tls_cert_file = /etc/letsencrypt/live/mail.your-domain.com/cert.pem smtpd_tls_CAfile = /etc/letsencrypt/live/mail.your-domain.com/chain.pem 保存并关闭文件,然后重新加载Postfix: sudo systemctl reload postfix 接下来,编辑Dovecot的主配置文件: sudo nano /etc/dovecot/dovecot.conf 处理以下2行(第47,48行): ssl_cert = </etc/ssl/certs/iRedMail.crt ssl_key = </etc/ssl/private/iRedMail.key 替换为: ssl_cert = </etc/letsencrypt/live/mail.your-domain.com/fullchain.pem ssl_key = </etc/letsencrypt/live/mail.your-domain.com/privkey.pem 保存并关闭文件,然后重装dovecot: sudo systemctl reload dovecot 从现在开始,桌面邮件用户将看不到安全警告。
第5步:发送测试电子邮件 使用postmaster邮件帐户登录iredadmin面板,在“添加”选项卡中,可以添加其他域或电子邮件地址:
创建用户后,可以访问Roundcube Webmail地址并使用新的邮件用户帐户登录,地址是:https://mail.your-domain.com/mail/:
现在你可以测试电子邮件发送和接收,请注意,可能需要等待几分钟才能收到电子邮件,因为默认情况下会启用灰名单。 注意:如果你的托管服务提供商或ISP阻止端口25,请让他们为你打开它,如果他们拒绝打开它,那么你就无法直接发送电子邮件,你需要设置SMTP中继来解决此问题,/var/log/mail.log中的以下消息表示端口25被阻止: mail postfix/smtp[9969]: connect to gmail-smtp-in.l.google.com[74.125.200.27]:25: Connection timed out mail postfix/smtp[9969]: connect to gmail-smtp-in.l.google.com[2404:6800:4003:c03::1b]:25: Connection timed out
第6步:在计算机或移动设备上使用邮件客户端 启动你的桌面电子邮件客户端,例如Mozilla Thunderbird并添加邮件帐户。 1、在传入服务器部分,选择IMAP协议,输入mail.your-domain.com作为服务器名称,选择端口993和SSL/TLS,选择普通密码作为身份验证方法。 2、在传出部分中,选择SMTP协议,输入mail.your-domain.com作为服务器名称,选择端口587和STARTTLS,选择普通密码作为身份验证方法。
第7步:提高你的电子邮件服务器信誉 要防止你的电子邮件被标记为垃圾邮件,应该设置PTR,SPF,DKIM和DMARC记录。 1、PTR记录 指针记录或PTR记录将IP地址映射到FQDN(完全限定的域名),它是A记录的对应物,用于反向DNS查找,可以帮助阻止垃圾邮件发送者,如果没有找到发送服务器的PTR记录,许多SMTP服务器会拒绝电子邮件。 要检查IP地址的PTR记录,请运行以下命令: dig -x IP-address +short 或者: host IP-address 因为你从你的托管服务提供商或ISP获得IP地址,而不是从你的域名注册商处获得IP地址,因此你必须在你的托管服务提供商的控制面板中为你的IP设置PTR记录,或者询问你的ISP,它的值应该是你的邮件服务器的主机名:mail.your-domain.com,如果你的服务器使用IPv6地址,请务必为你的IPv6地址添加PTR记录。 2、SPF记录 SPF(发件人策略框架)记录指定允许哪些主机或IP地址代表域发送电子邮件,你应该只允许自己的电子邮件服务器或ISP的服务器为你的域发送电子邮件,在DNS管理界面中,创建如下所示的新TXT记录:
说明: TXT表示这是TXT记录。 在名称字段中输入@表示主域名。 v=spf1表示这是SPF记录,版本为SPF1。 mx表示允许MX记录中列出的所有主机为你的域发送电子邮件,并且不允许所有其他主机。 ~all表示来自你域的电子邮件应该只来自SPF记录中指定的主机,来自其他主机的电子邮件将被标记为伪造。 要检查你的SPF记录是否传播到公共Internet,你可以在Linux机器上使用dig实用程序,如下所示: dig your-domain.com txt txt选项告诉dig我们只想查询TXT记录。 3、DKIM记录 DKIM(DomainKeys Identified Mail)使用私钥对从你的域发送的电子邮件进行数字签名,接收SMTP服务器使用公钥验证签名,该公钥在DNS DKIM记录中发布。 iRedMail脚本自动为你的服务器配置DKIM,剩下要做的唯一事情是在DNS管理器中创建DKIM记录,打开iRedMail-0.9.8目录下的iRedMail.tips文件: sudo nano iRedMail.tips 向下滚动到DKIM支持部分的DNS记录,DKIM公钥位于括号中,如图:
还可以使用以下命令显示公钥: sudo amavisd-new showkeys 然后在DNS管理器中创建TXT记录,在名称字段中输入dkim._domainkey,复制括号中的所有内容并粘贴到值字段中,删除所有双引号:
保存更改后,运行以下命令以测试DKIM记录是否正确: sudo amavisd-new testkeys 如果DKIM记录正确,则测试将通过,请注意,你的DNS记录可能需要一段时间才能传播到Internet: TESTING#1 linuxbabe.com: dkim._domainkey.linuxbabe.com => pass 4、DMARC记录 DMARC代表基于域的消息认证,报告和一致性,DMARC可以帮助接收电子邮件服务器以识别合法电子邮件,并防止你的域名被电子邮件欺骗使用。 要创建DMARC记录,请转到DNS管理器并添加TXT记录,在名称字段中,输入_dmarc,在值字段中,输入以下内容: v=DMARC1; p=none; pct=100; rua=mailto:dmarc-reports@your-domain.com
上述DMARC记录是一个安全的起点。
第8步:测试电子邮件分数和位置 创建PTR,SPF,DKIM记录后,请访问:https://www.mail-tester.com,你将看到一个唯一的电子邮件地址,从你的域发送电子邮件到此地址,然后检查你的分数,如你所见,我得到了一个完美的分数,在测试结果中,你应检查你的PTR记录,SPF和DKIM记录是否有效:
imporve email server reputationMail-tester.com只能显示发件人得分,还有另一项名为GlockApps的服务,可让你检查你的电子邮件是否落在收件人的收件箱或垃圾邮件文件夹中,或者直接拒绝,它支持许多流行的电子邮件提供商,如Gmail、Outlook、Hotmail、YahooMail、iCloud邮件等:
附:禁用Greylisting 默认情况下,iRedMail已启用Greylisting,这会告诉其他发送SMTP服务器在几分钟后再次尝试,这主要用于阻止垃圾邮件,但也会降低用户体验,如果你想禁用Greylisting,请按照以下说明操作。 添加写入权限到/opt/iredapd/settings.py文件: sudo chmod 600 /opt/iredapd/settings.py 然后编辑配置文件: sudo nano /opt/iredapd/settings.py 找到以下行: plugins = ["reject_null_sender", "wblist_rdns", "reject_sender_login_mismatch", "greylisting", "throttle", "amavisd_wblist", "sql_alias_access_policy"] 从列表中删除“greylisting”,保存并关闭文件,然后重启iredapd: sudo systemctl restart iredapd 将配置文件更改回只读模式: sudo chmod 400 /opt/iredapd/settings.py
结语 以上就是在Ubuntu 18.04上使用iRedMail设置邮件服务器的步骤,如果你不需要TLS证书,那就不需要做第4步的操作。同时声明一下设置备份邮件服务器的思路,你的主邮件服务器有时可能会关闭,如果你在数据中心托管邮件服务器,那么停机时间非常短,因此你不必担心丢失入站电子邮件,如果你在家中托管邮件服务器,则无法预测停机时间,因此在数据中心运行备份邮件服务器以防止丢失入站电子邮件是一种很好的做法,备份邮件服务器只需要512MB RAM即可运行。
相关主题 |