& Mail Demon &
Mail Demon是一个简单轻量的C# SMTP服务器和邮件列表系统,用于发送无限量的电子邮件和短信。它注重简单性、异步和性能,即使在廉价的Linux VPS上也能轻松发送每秒数千条消息。内存使用和CPU使用率已优化到极致。通过SPF验证,还内置了安全性和垃圾邮件预防功能。
Mail Demon需要安装.NET 6.0+运行时,或者您可以构建独立的可执行文件以移除此依赖。
在尝试使用前,请确保将appsettings.json设置为所需的参数。
Mail Demon非常适合发送通知、公告甚至短信。有关短信的更多信息,请参阅SMS Email Gateway。
IPBan集成
Mail Demon与IPBan集成。如果您在Linux或Windows机器上安装了IPBan,Mail Demon将通过自定义日志文件将来自SMTP或邮件列表登录的失败登录尝试发送给IPBan,从而阻止超过IPBan失败登录阈值的攻击者。
项目构建说明
- 确保安装了.NET 6.0 SDK或更新版本。
- 下载代码,在Visual Studio或VS Code中打开,设置发布配置。
- 使用您的设置更新appsettings.json。建议使用SSL证书。Let's Encrypt是一个很好的选择。确保将用户设置为默认值以外的其他值。
- 右键点击项目,选择"发布"选项。
- 找到发布文件夹(右键点击项目并在资源管理器中打开),然后浏览到bin/release/publish/netcoreapp并确保看起来正常。
- 如果您不想安装.NET Core,请将发布配置文件设置为"自包含"。
- 将文件FTP或复制到您的服务器。
- 对于Windows,使用Firedaemon并设置命令以从发布步骤运行.dll或.exe。
- 对于Linux,设置服务(将二进制文件放在/opt/MailDemon中):
sudo nano /lib/systemd/system/MailDemon.service
[Unit]
Description=Mail Demon Service
After=network.target
[Service]
WorkingDirectory=/opt/MailDemon
ExecStart=/usr/bin/dotnet /opt/MailDemon/MailDemon.dll
Restart=on-failure
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable MailDemon
sudo systemctl start MailDemon
systemctl status MailDemon
SMTP设置说明
- 确保您已为您的域设置DNS(TXT、A和MX记录)
- 设置SPF记录:v=spf1 mx -all
- 设置MX记录:@或smtp或email等
- 设置A和/或AAAA记录:@或smtp或email等
- 设置DMARC记录,https://en.wikipedia.org/wiki/DMARC
- 设置DKIM,https://en.wikipedia.org/wiki/DomainKeys_Identified_Mail
- 为您的IP地址设置反向DNS,指向您的A和/或AAAA记录。您的托管提供商应该有一种方法来执行此操作。
支持的SMTP扩展:
- 250-SIZE
- 250-8BITMIME
- 250-AUTH PLAIN
- 250-PIPELINING
- 250-ENHANCEDSTATUSCODES
- 250-BINARYMIME
- 250-CHUNKING
- 250-STARTTLS
- 250 SMTPUTF8
已知问题:
- Hotmail.com、live.com和outlook.com的SSL证书已经无效一段时间了。我已将它们添加到appsettings.json中。您可能需要为具有不良证书的邮件服务添加其他条目。
邮件列表设置
Mail Demon包含一个集成的邮件列表管理网站和邮件列表发送服务。要使用此服务,您必须设置appsettings.json
文件并进行一些额外的可选自定义。
- 确保
appsettings.json
中的SMTP设置正确。 - 设置
appsettings.json
中的mailDemonWeb
部分。- 将
enableWeb
设置为true。 - 将authority设置为您的方案和主机,例如https://yourdomain.com。
- 设置您的管理员用户/密码。
- 设置Google reCAPTCHA密钥(https://www.google.com/recaptcha)。
- 设置SSL证书(.pem公钥和私钥文件以及密码)。
- 将
- 使用
--server.urls
参数设置Web服务器的Kestrel绑定。 - 使用https://yourdomain.com/MailDemonLogin登录。将yourdomain.com替换为您的实际域名。使用`appsettings.json`文件中的管理员用户/密码。在登录之前不会显示任何内容。
- 使用顶部菜单创建新的邮件列表。
- 列表名称应该更像一个简短的变量名,具有一定的可读性,但要简短且唯一。列表标题是订阅者将看到的内容。
- 将您的受害者,我是说订阅者,引导到https://yourdomain.com/SubscribeInitial/[listname]。将yourdomain.com替换为您的实际域名。将[listname]替换为实际的列表名称。
- 通过在顶部选择列表,然后使用创建模板按钮来创建新模板。
- 模板名称格式为
[listName]@[templateName]
(不带括号)。就像列表一样,模板名称是一个简短、易读且唯一的名称。 - 模板标题不是电子邮件的主题,它只是为您提供信息。
- 支持完整的Razor语法,
@Html
等。模板的模型是MailListSubscription类。 - 随意在Visual Studio中创建和编辑模板,然后将它们粘贴到模板文本框中。
- 每个模板都应该有一个布局。布局是一个您永远不会发送电子邮件的模板,它只是包装其他模板。您可以将布局命名为
[listName]@[layoutName]
(不带括号)。您可以从_LayoutMail.cshtml
开始,进行自定义并提供您自己的CSS链接。您还应该提供一个取消订阅链接,以及一个实体邮寄地址,以遵守反垃圾邮件法律。 - 按以下方式设置模板的布局:
@{ Layout = "listName@layoutName"; }
- 要设置电子邮件主题,请在模板正文中添加
<!-- Subject: ... -->
,它将被设置为电子邮件主题。这是发送电子邮件所必需的。请参阅SubscribeConfirmDefault.cshtml
以获取示例。 - 要从邮件列表批量发送电子邮件,请从列表中选择(或创建)要发送的模板,编辑它,添加主题并保存。然后使用发送按钮执行批量电子邮件操作。错误将被记录。
- 有三个魔法模板名称可以覆盖列表的默认行为:
- SubscribeInitial(参见SubscribeInitialDefault.cshtml)。这是初始注册表单。
- SubscribeConfirm(参见SubscribeConfirmDefault.cshtml)。这是带有激活订阅链接的确认电子邮件。
- SubscribeWelcome(参见SubscribeWelcomeDefault.cshtml)。这是通知活动订阅的欢迎电子邮件,包含取消订阅链接。
- 请注意,MailDemon.db文件包含所有列表、模板、订阅者等。请定期备份此文件!
- 您还可以将模板存储在Views/Shared目录中。遵循相同的模板名称命名约定。
数据库
Mail Demon默认使用sqlite。在appsettings.json文件中,您可以将DatabaseProvider元素设置为sqlserver
,并将ConnectionStrings:sqlserver
设置为您的SQL Server连接字符串(如果需要)。
尽情使用吧!
--Jeff