前言
在开发过程中,邮件协议是一个非常重要的环节。其中,DCC(Distributed Checksum Clearinghouses)是一种常用的反垃圾邮件措施之一。而 npm 上的 haraka-plugin-dcc 包,就是一个基于 Haraka 框架实现的 DCC 插件,可以帮助我们实现 DCC 的功能。本文将介绍如何使用该插件。
安装 haraka-plugin-dcc 包
在项目根目录下,通过 npm 安装 haraka-plugin-dcc 包。
npm install haraka-plugin-dcc --save
然后,我们需要在 haraka 的配置文件中添加该插件。打开配置文件(默认为 config/smtp.ini),在 rcpt_to.in_host_list
配置项中添加 dcc,如下所示:
[rcpt_to.in_host_list] match=dcc check=plugins/dcc
这样,haraka 就会加载该插件,实现 DCC 的功能了。
配置 haraka-plugin-dcc 包
接下来,我们需要对 haraka-plugin-dcc 进行一些配置。
在 haraka 的配置文件中,找到 plugins/dcc
配置项,添加以下内容:
[dcc] report_timeout=2000 required_hits=1
其中,
report_timeout
表示等待 DCC 服务器响应的时间(单位为毫秒),默认为 2000 毫秒。required_hits
表示需要满足多少个 DCC 服务器对该邮件进行检测后才会认为是垃圾邮件,这里设置为 1。
同时,还需要为 DCC 服务器指定 IP 和端口号:
[dcc] server_ip=127.0.0.1 server_port=6277
示例代码
为了演示 haraka-plugin-dcc 的使用,我们来写个简单的例子:发送一封包含垃圾邮件文本的邮件,并检测该邮件是否被标记为垃圾邮件。
首先,在 haraka 的 plugins 目录下,创建一个名为 test-plugin
的文件夹,并在该文件夹下创建一个名为 index.js
的文件。
在 index.js
中,添加以下代码:
-- -------------------- ---- ------- ----------------- - ------ ----------- -- - ----- - ----------- - - ----------- ----- --------- - ------------------------------ -- ------------------------------ -- ---------------------------------------- - ------ ------- - ------------------------------------- ------- -- - --------------------------- -- ----------------- --- ------------------------------------ -- -- - ----- - ---------- - - ------------------ ----- ---------- - ---------------------- ---------------------------- ---------------------------------------------------------------- -- ------------------ - -------------------- ----- ---- - ------------------------------ -- ------------------------- - ------------------------------------ ----- ------ ----- ------- -------- ----- ----- --- - ------ ------- --- --展开代码
该函数表示在发送数据之前,对邮件进行处理。
在处理过程中,首先获取邮件的所有收件人地址。然后,我们只对接收到 test@domain.com
地址的邮件进行检测。
接着,我们将邮件上的附件进行解析,获取到邮件文本,并进行检测。如果邮件中包含 'viagra'
字符串(垃圾邮件经常包含该字符串),则说明该邮件为垃圾邮件,并将结果标记为不合格。
最后,调用 next()
方法,表示接下来的处理将由其他插件进行。
运行示例代码
在 project 根路径下,运行如下命令,启动 haraka 服务:
npm run start
然后,打开一个新的命令行窗口,运行以下命令,发送一封包含 'viagra'
的邮件。
curl -v \ --url 'smtp://localhost:2525' \ --mail-from 'sender@domain.com' \ --mail-rcpt 'test@domain.com' \ --upload-file <(echo "From: sender@domain.com\nTo: test@domain.com\nSubject: Testing haraka-plugin-dcc\n\nHi test,<br><br>This is testing for haraka-plugin-dcc. I hope this email goes to your inbox.<br><br>Best regards.") \ --user 'username:password'
然后,查看 haraka 的日志文件,确认邮件是否被标记为垃圾邮件。
结语
通过本文,我们了解了如何使用 npm 上的 haraka-plugin-dcc 包实现 DCC 功能,同时还讲解了如何进行配置和示例演示。希望本文可以帮助大家更好地理解和使用该插件。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005600e81e8991b448dde93