如何设置电子邮件服务器?

Ste*_*zzo 62 server email

我的 VPS 正在运行 Ubuntu,我希望能够接收到我的域的电子邮件。

如何轻松设置邮件服务器来执行此操作?

Mar*_*ppi 48

这就是我在我们的生产机器上设置邮件的方式。这些是我们需要的标准:

  • 电子邮件帐户
  • 电子邮件别名(转发器)
  • IMAP、POP3 和 SMTP

“简单”(tl;博士)

首先,我想解决看起来最简单的解决方案。

sudo tasksel install mail-server
Run Code Online (Sandbox Code Playgroud)

当我们尝试这个时出现了几个问题:首先它安装了 Dovecot,这对大多数人来说都很好,但我们认为 Courier 是满足我们需求的两者中更好的。其次,它使用了很棒的 Postfix,但我们也需要 Exim,因为它是一个更强大的 MTA/SMTP 服务器。第三,它安装 MySQL - 在我使用的配置中,我们更喜欢使用平面文件进行配置,因为它少了一个断点。想想如果 MySQL 由于某种未知原因崩溃会发生什么。否则,对于小型邮件服务(想想总共 1-2 个电子邮件域),其余的包非常简单且易于维护。

我们的配置

目录结构

我们稍微偏离了正常配置的路径,但它使管理更容易。

我们所有的邮件都存储在/var/mail/virtual/<domain>/<user>/mail因此对于以后的示例中,我将分别使用email@example.comfwd@example.comfoo@example.com来表示电子邮件地址、要转到的转发器example@gmail.com和错误地址。在上面的例子中,它将是/var/mail/virtual/example.com/email/mail.

我还维护了服务器上所有域的列表,/etc/valiases但稍后会详细介绍。

后缀

这或多或少是设置的简单部分。只需安装postfix软件包。

进出口

安装 Eximapt-get install exim4 exim4-base exim4-config exim4-daemon-heavy安装后,您需要编辑 exim 默认配置以替换或添加以下值:

domainlist local_domains = @:localhost:dsearch;/etc/valiases:dsearch;/var/mail/virtual
daemon_smtp_ports = smtp : 587 : 465
MAIN_TLS_ENABLE = yes
Run Code Online (Sandbox Code Playgroud)

(这些行将出现在文件的不同部分,相应地替换每一行)

完成后,使用以下命令重建 exim 配置update-exim4.conf这结束了 Exim 所需的更改

导游

安装 Couriercourier-base应该安装courier-authdaemon, courier-authlib*, courier-imap*, courier-pop*, courieruserinfo,courier-ssl

老实说,标准之外没有太多配置。您只需要创建一个用户数据库。

帐户

Exim 和 Courier 检查几个地方以查看登录名或传入的电子邮件是否有效。Exim 检查域是否被列为本地主机名,或者/var/mail/virtual域是否在/etc/valiases.

创建电子邮件帐户

我最终创建了几个工具来简化这个过程——但是添加一个新用户的重点是:

mkdir -p /var/mail/virtual/example.com/email
chown -R mail.mail /var/mail/virtual/example.com/
maildirmake /var/mail/virtual/example.com/email/mail
chown -R mail.mail /var/mail/virtual/example.com/
Run Code Online (Sandbox Code Playgroud)

然后将地址添加到 courier userdb - 这样他们就可以登录了

userdb email@example.com set uid=8 gid=8 home=/var/mail/virtual/example.com/email mail=/var/mail/virtual/example.com/email/mail
Run Code Online (Sandbox Code Playgroud)

确保在适当的地方替换这些值。此外 -uid并且gid 需要是邮件用户的数字用户/组 ID。

userdbpw -md5 | userdb email@example.com set systempw
Run Code Online (Sandbox Code Playgroud)

这将提示您输入密码,输入您希望用于该帐户的密码。

makeuserdb
Run Code Online (Sandbox Code Playgroud)

最后,生成 userdb 哈希/影子文件。重新启动 Courier 并测试您的更改是否有效:

authtest email@example.com
Run Code Online (Sandbox Code Playgroud)

应该产生类似的东西

Authentication succeeded.

     Authenticated: email@example.com  (uid 8, gid 8)
    Home Directory: /var/mail/virtual/example.com/email
           Maildir: /var/mail/virtual/example.com/email/mail
             Quota: (none)
Encrypted Password: $1$LOLCATS$THISWILLBEAHASH.
Cleartext Password: (none)
           Options: (none)
Run Code Online (Sandbox Code Playgroud)

如果您看到“身份验证失败:不允许操作”,请编辑 /etc/courier/authdaemonrc 并将 authuserdb 添加到 authmodulelist 行。

确认所有测试后,重新启动涉及的各种服务 ( courier-authdaemon, exim4),打开端口 143、25、586、495、110 并在您喜欢的邮件客户端中设置帐户。

创建电子邮件别名

对于每个域,您应该在其中创建一个文件/etc/valiases(如果不存在则创建),至少包含以下行:

*: :fail: No user at this address.
Run Code Online (Sandbox Code Playgroud)

这是什么意思:如果传入的邮件与我存档的任何电子邮件帐户都不匹配 - 那么邮件应该会失败并退回并显示一条消息:“此地址没有用户”。因此,所有发送到“说:”的邮件foo@example.com都将作为失败被退回。

但是,我们希望在其他地方保留一些电子邮件地址 - 例如 example@gmail.com - 为此,我们需要创建/etc/valiases/example.com该文件的内容如下:

fwd: example@gmail.com
*: :fail: No user at this address.
Run Code Online (Sandbox Code Playgroud)

这样,即使 fwd@example.com 不匹配服务器上的任何电子邮件帐户,它/etc/valiases也会在文件中匹配,并且邮件将被转发到 example@gmail.com - 但是,foo@example.com 仍然会失败“此地址没有用户”消息。

  • 这是否带有 ISBN 号? (11认同)

Jo-*_*tad 14

最简单的方法是运行sudo tasksel install mail-server. 这将为您提供一个具有合理默认值的电子邮件服务器。你所要做的就是回答几个问题。显然,如果有必要,您仍然可以在之后进行手动配置,但在大多数情况下不会。只需按照屏幕上的说明进行操作,您应该没问题。

不过,阅读电子邮件服务管理是绝对值得推荐的。

官方参考:


fra*_*gos 5

我没有“很好的答案”,但您可能会发现这些链接很有帮助https://help.ubuntu.com/community/PostfixBasicSetupHowto#Receiving Mail 和https://help.ubuntu.com/community/Postfix