跳转至内容

dma

来自 ArchWiki

dma (Dragonfly Mail Agent) 是一个极其小巧的邮件传输代理 (MTA)。它能够接收邮件并将其传递到本地或远程目的地;然而,如果您想使用自己的域名发送和接收邮件,那么您将需要一个功能齐全的邮件服务器

安装

安装 dma 包。

配置

dma 有两个主要的配置文件:/etc/dma/dma.conf 包含主要的设置指令,而 /etc/dma/auth.conf 对于 SMTP 服务器的认证是必需的。dma 提供了合理的默认值,因此您可能无需特殊配置即可进行本地邮件投递。

SMTP 传输

如果您想通过外部 SMTP 服务器路由邮件,您必须在 /etc/dma/dma.conf 中设置 SMARTHOST 地址(也称为中继主机)。

/etc/dma/dma.conf
SMARTHOST smtp-host

同时,请不要忘记在 /etc/dma/auth.conf 中按照以下格式设置认证凭据:

/etc/dma/auth.conf
user|smarthost.example.com:password

要让 dma 实际使用凭据文件,请设置 AUTHPATH

/etc/dma/dma.conf
AUTHPATH /etc/dma/auth.conf

要更改默认端口,请设置 PORT 指令(默认为 25)。

/etc/dma/dma.conf
# accept mail from external MTAs (STARTTLS is also an option)
PORT 25

# accept mail from MUAs with TLS
PORT 465

# accept mail from MUAs (STARTTLS is also an option)
PORT 587

加密

SECURETRANSFER 指令在邮件传输期间启用加密。根据您的需要,取消注释 STARTTLS 以启用 STARTTLS 支持,并激活 OPPORTUNISTIC_TLS 以在出错时允许未加密的回退。

出于任何原因,您可能想执行纯文本 SMTP 认证。在这种情况下,请取消注释 SECURE 指令并将其明确更改为 INSECURE

伪装

如果您想替换信封中的原始 From: 字段,可以使用 MASQUERADE 功能。

/etc/dma/dma.conf
# send mails as user foo (hostname will be derived with gethostbyname() or set to MAILNAME directive)
MASQUERADE foo@

# send mails from host bar (username will be substituted)
MASQUERADE bar

# send mail as user foo from host bar
MASQUERADE foo@bar

测试

要发送测试邮件,请从命令行执行以下命令:

$ mail -s "Just a dma test" foo@bar.example.com
This is just a small test message
<Ctrl+D>

以 root 身份运行 journalctl -r 以查看是否一切顺利。您也可以使用以下命令检查 dma 队列:

$ dma -bp

/var/spool/dma 目录也保存着未投递/未处理的邮件。

示例

通过 Gmail 的 SMTP 服务器发送邮件

前提条件

如果您使用了两步验证(也称为双因素认证)流程,那么您应该创建一个所谓的应用专用密码

为此,请登录您的Google 账号,在左侧面板选择“安全”选项,然后在“登录 Google”面板中点击“应用专用密码”。如果您没有看到此项,请查阅 Google 上的相应线程

点击“选择应用”并选择您想要的应用程序(通常称为 **邮件**)。然后点击“选择设备”并选择设备,但最好添加自定义设备并为其起一个方便以后管理的名称。然后点击“生成”并记下您的 **应用专用密码**(黄色条中的 16 位数字代码)。

警告 无法稍后查看或更改应用专用密码,请立即使用。

配置

/etc/dma/dma.conf
SMARTHOST smtp.gmail.com
PORT 587
AUTHPATH /etc/dma/auth.conf
SECURETRANSFER
STARTTLS
MASQUERADE username@gmail.com

MASQUERADE 行确保由 DMA 发送的邮件看起来来自指定的用户名。Google 会拒绝来自不正确 Google 账号的电子邮件。

/etc/dma/auth.conf
username@gmail.com|smtp.gmail.com:your-password
注意 不要忘记指定您的 Google 账号登录名和密码(或者使用应用专用密码,参见#先决条件)。

使用“空客户端”的最小化配置

如果您的用例是“将所有邮件发送到外部邮箱,不进行任何本地投递”,则以下配置

  • 使用端口 465(默认 TLS,始终加密,无需 STARTTLS 协商)。
  • 将所有内容发送到 Gmail SMTP 服务器,绕过任何本地 mbox。
/etc/dma/dma.conf
SMARTHOST smtp.gmail.com
PORT 465
AUTHPATH /etc/dma/auth.conf
SECURETRANSFER
MASQUERADE username@gmail.com
NULLCLIENT

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.