mirror of
https://github.com/Jinnrry/PMail.git
synced 2026-04-23 00:17:16 +08:00
054336fe9e
1、新增垃圾邮件过滤插件 2、使用使用github.com/dlclark/regexp2替换go原生的正则包 3、修复空数据导致的邮件插入失败
485 lines
16 KiB
Go
485 lines
16 KiB
Go
package smtp_server
|
|
|
|
import (
|
|
"bytes"
|
|
"github.com/Jinnrry/pmail/config"
|
|
"github.com/Jinnrry/pmail/db"
|
|
parsemail2 "github.com/Jinnrry/pmail/dto/parsemail"
|
|
"github.com/Jinnrry/pmail/hooks"
|
|
"github.com/Jinnrry/pmail/session"
|
|
"github.com/Jinnrry/pmail/utils/context"
|
|
log "github.com/sirupsen/logrus"
|
|
"net"
|
|
"net/netip"
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func testInit() {
|
|
// 设置日志格式为json格式
|
|
//log.SetFormatter(&log.JSONFormatter{})
|
|
|
|
log.SetReportCaller(true)
|
|
log.SetFormatter(&log.TextFormatter{
|
|
//以下设置只是为了使输出更美观
|
|
DisableColors: true,
|
|
TimestampFormat: "2006-01-02 15:03:04",
|
|
})
|
|
|
|
// 设置将日志输出到标准输出(默认的输出为stderr,标准错误)
|
|
// 日志消息输出可以是任意的io.writer类型
|
|
log.SetOutput(os.Stdout)
|
|
|
|
// 设置日志级别为warn以上
|
|
log.SetLevel(log.ErrorLevel)
|
|
|
|
var cst, _ = time.LoadLocation("Asia/Shanghai")
|
|
time.Local = cst
|
|
|
|
config.Init()
|
|
config.Instance.DkimPrivateKeyPath = "../config/dkim/dkim.priv"
|
|
config.Instance.DbType = config.DBTypeSQLite
|
|
config.Instance.DbDSN = "../config/pmail_temp.db"
|
|
|
|
parsemail2.Init()
|
|
db.Init("")
|
|
session.Init()
|
|
hooks.Init("dev")
|
|
}
|
|
|
|
func TestPmailEmail(t *testing.T) {
|
|
testInit()
|
|
emailData := `DKIM-Signature: a=rsa-sha256; bh=x7Rh+N2y2K9exccEAyKCTAGDgYKfnLZpMWc25ug5Ny4=;
|
|
c=simple/simple; d=domain.com;
|
|
h=Content-Type:Mime-Version:Subject:To:From:Date; s=default; t=1693831868;
|
|
v=1;
|
|
b=1PZEupYvSMtGyYx42b4G65YbdnRj4y2QFo9kS7GXiTVhUM5EYzJhZzknwRMN5RL5aFY26W4E
|
|
DmzJ85XvPPvrDtnU/B4jkc5xthE+KEsb1Go8HcL8WQqwvsE9brepeA0t0RiPnA/x7dbTo3u72SG
|
|
WqtviWbJH5lPFc9PkSbEPFtc=
|
|
Content-Type: multipart/mixed;
|
|
boundary=3c13260efb7bd8bad8315c21215489fe283f36cdf82813674f6e11215f6c
|
|
Mime-Version: 1.0
|
|
Subject: =?utf-8?q?=E6=8F=92=E4=BB=B6=E6=B5=8B=E8=AF=95?=
|
|
To: =?utf-8?q?=E5=90=8D?= <ok@jinnrry.com>
|
|
From: =?utf-8?q?=E5=8F=91=E9=80=81=E4=BA=BA?= <j@jinnrry.com>
|
|
Date: Mon, 04 Sep 2023 20:51:08 +0800
|
|
|
|
--3c13260efb7bd8bad8315c21215489fe283f36cdf82813674f6e11215f6c
|
|
Content-Type: multipart/alternative;
|
|
boundary=9ebf2f3c4f97c51dd9a285ae28a54d2d0d84aa6d0ad28b76547e2096bb66
|
|
|
|
--9ebf2f3c4f97c51dd9a285ae28a54d2d0d84aa6d0ad28b76547e2096bb66
|
|
Content-Transfer-Encoding: quoted-printable
|
|
Content-Disposition: inline
|
|
Content-Type: text/plain
|
|
|
|
=E8=BF=99=E6=98=AFText
|
|
--9ebf2f3c4f97c51dd9a285ae28a54d2d0d84aa6d0ad28b76547e2096bb66
|
|
Content-Transfer-Encoding: quoted-printable
|
|
Content-Disposition: inline
|
|
Content-Type: text/html
|
|
|
|
<div>=E8=BF=99=E6=98=AFHtml</div>
|
|
--9ebf2f3c4f97c51dd9a285ae28a54d2d0d84aa6d0ad28b76547e2096bb66--
|
|
|
|
--3c13260efb7bd8bad8315c21215489fe283f36cdf82813674f6e11215f6c--
|
|
`
|
|
s := Session{
|
|
RemoteAddress: net.TCPAddrFromAddrPort(netip.AddrPortFrom(netip.AddrFrom4([4]byte{}), 25)),
|
|
Ctx: &context.Context{
|
|
UserID: 0,
|
|
UserName: "",
|
|
UserAccount: "",
|
|
},
|
|
To: []string{"ok@jinnrry.com"},
|
|
}
|
|
|
|
s.Data(bytes.NewReader([]byte(emailData)))
|
|
|
|
}
|
|
|
|
func TestRuleForward(t *testing.T) {
|
|
testInit()
|
|
|
|
forwardEmail := `DKIM-Signature: a=rsa-sha256; bh=bpOshF+iimuqAQijVxqkH6gPpWf8A+Ih30/tMjgEgS0=;
|
|
c=simple/simple; d=jinnrry.com;
|
|
h=Content-Type:Mime-Version:Subject:To:From:Date; s=default; t=1693992640;
|
|
v=1;
|
|
b=XiOgYL9iGrkuYzXBAf7DSO0sRbFr6aPOE4VikmselNKEF1UTjMPdiqpeHyx/i6BOQlJWWZEC
|
|
PzceHTDFIStcZE6a5Sc1nh8Fis+gRkrheBO/zK/P5P/euK+0Fj5+0T82keNTSCgo1ZtEIubaNR0
|
|
JvkwJ2ZC9g8xV6Yiq+ZhRriT8lZ6zeI55PPEFJIzFgZ7xDshDgx5E7J1xRXQqcEMV1rgVq04d3c
|
|
6wjU+LLtghmgtUToRp3ASn6DhVO+Bbc4QkmcQ/StQH3681+1GVMHvQSBhSSymSRA71SikE2u3a1
|
|
JnvbOP9fThP7h+6oFEIRuF7MwDb3JWY5BXiFFKCkecdFg==
|
|
Content-Type: multipart/mixed;
|
|
boundary=8e9d5abb6bdac11b8d7d6e13280af1a87d12b904a59368d6e852b0a4ce3e
|
|
Mime-Version: 1.0
|
|
Subject: forward
|
|
To: <t@jiangwei.one>
|
|
From: "i" <i@jinnrry.com>
|
|
Date: Wed, 06 Sep 2023 17:30:40 +0800
|
|
|
|
--8e9d5abb6bdac11b8d7d6e13280af1a87d12b904a59368d6e852b0a4ce3e
|
|
Content-Type: multipart/alternative;
|
|
boundary=a62ae91c159ea22e8196d57d344626eb00d1ddfa9c5064a39b01588aa992
|
|
|
|
--a62ae91c159ea22e8196d57d344626eb00d1ddfa9c5064a39b01588aa992
|
|
Content-Transfer-Encoding: quoted-printable
|
|
Content-Disposition: inline
|
|
Content-Type: text/plain
|
|
|
|
hello pls Forward the email.
|
|
--a62ae91c159ea22e8196d57d344626eb00d1ddfa9c5064a39b01588aa992
|
|
Content-Transfer-Encoding: quoted-printable
|
|
Content-Disposition: inline
|
|
Content-Type: text/html
|
|
|
|
<p>hello pls Forward the email.</p>
|
|
--a62ae91c159ea22e8196d57d344626eb00d1ddfa9c5064a39b01588aa992--
|
|
|
|
--8e9d5abb6bdac11b8d7d6e13280af1a87d12b904a59368d6e852b0a4ce3e--`
|
|
|
|
readEmail := `DKIM-Signature: a=rsa-sha256; bh=JcCDj6edb1bAwRbcFZ63plFZOeB5AdGWLE/PQ2FQ1Tc=;
|
|
c=simple/simple; d=jinnrry.com;
|
|
h=Content-Type:Mime-Version:Subject:To:From:Date; s=default; t=1693992600;
|
|
v=1;
|
|
b=rwlqSkDFKYH42pA1jsajemaw+4YdeLHPeqV4mLQrRdihgma1VSvXl5CEOur/KuwQuUarr2cu
|
|
SntWrHE6+RnDaQcPEHbkgoMjEJw5+VPwkIvE6VSlMIB7jg93mGzvN2yjheWTePZ+cVPjOaIrgir
|
|
wiT24hkrTHp+ONT8XoS0sDuY+ieyBZp/GCv/YvgE4t0JEkNozMAVWotrXxaICDzZoWP3NNmKLqg
|
|
6He6zwWAl51r3W5R5weGBi6A/FqlHgHZGroXnNi+wolDuN6pQiVAJ7MZ6hboPCbCCRrBQDTdor5
|
|
wEI2+MwlJ/d2f17wxoGmluCewbeYttuVcpUOVwACJKw3g==
|
|
Content-Type: multipart/mixed;
|
|
boundary=9e33a130a8a976102a93e296d6408d228e151f7841ca9ee0d777234fd6f3
|
|
Mime-Version: 1.0
|
|
Subject: read
|
|
To: <t@jiangwei.one>
|
|
From: "i" <i@jinnrry.com>
|
|
Date: Wed, 06 Sep 2023 17:30:00 +0800
|
|
|
|
--9e33a130a8a976102a93e296d6408d228e151f7841ca9ee0d777234fd6f3
|
|
Content-Type: multipart/alternative;
|
|
boundary=54a95f3429f3cdb342383db10293780bed341f8dc20d2f876eb0853e3884
|
|
|
|
--54a95f3429f3cdb342383db10293780bed341f8dc20d2f876eb0853e3884
|
|
Content-Transfer-Encoding: quoted-printable
|
|
Content-Disposition: inline
|
|
Content-Type: text/plain
|
|
|
|
12 aRead 1sadf
|
|
--54a95f3429f3cdb342383db10293780bed341f8dc20d2f876eb0853e3884
|
|
Content-Transfer-Encoding: quoted-printable
|
|
Content-Disposition: inline
|
|
Content-Type: text/html
|
|
|
|
<p>12 aRead 1sadf</p>
|
|
--54a95f3429f3cdb342383db10293780bed341f8dc20d2f876eb0853e3884--
|
|
|
|
--9e33a130a8a976102a93e296d6408d228e151f7841ca9ee0d777234fd6f3--`
|
|
|
|
moveEmail := `DKIM-Signature: a=rsa-sha256; bh=YQfG/wlHGhky6FNmpIwgDYDOc/uyivdBv+9S02Z04xY=;
|
|
c=simple/simple; d=jinnrry.com;
|
|
h=Content-Type:Mime-Version:Subject:To:From:Date; s=default; t=1693992542;
|
|
v=1;
|
|
b=IhxswOCq8I7CmCas1EMp+n8loR7illqlF0IJC6eN1+OLjI/E5BPzpP4HWkyqaAkd0Vn9i+Bn
|
|
MVb5kNHZ2S7qt0rqAAc6Atc0i9WpLEI3Cng+VDn+difcMZlJSAkhLLn2sUsS4Fzqqo3Cbw62qSO
|
|
TgnWRmlj9aM+5xfGcl/76WOvQQpahJbGg6Go51kFMeHVom/VeGKIgFBCeMe37T/LS03c3pAV8gA
|
|
i6Zy3GYE57W/qU3oCzaGeS3n5zom/i74H4VipiVIMX/OBNYhdHWrP8vyjvzLFpJlXp6RvzcRl0P
|
|
ytyiCZfE8G7fAFntp20LW70Y5Xgqqczk1jR578UDczVoA==
|
|
Content-Type: multipart/mixed;
|
|
boundary=c84d60b253aa6caee345c73e717ad59b1975448bbdfad7a23ac4d76e022d
|
|
Mime-Version: 1.0
|
|
Subject: Move
|
|
To: <t@jiangwei.one>
|
|
From: "i" <i@jinnrry.com>
|
|
Date: Wed, 06 Sep 2023 17:29:02 +0800
|
|
|
|
--c84d60b253aa6caee345c73e717ad59b1975448bbdfad7a23ac4d76e022d
|
|
Content-Type: multipart/alternative;
|
|
boundary=a69985ebcf3c1c44d6e69e5a29c1044743cd9e44d4bc9bb6886f83a73966
|
|
|
|
--a69985ebcf3c1c44d6e69e5a29c1044743cd9e44d4bc9bb6886f83a73966
|
|
Content-Transfer-Encoding: quoted-printable
|
|
Content-Disposition: inline
|
|
Content-Type: text/plain
|
|
|
|
MOVE move Move
|
|
--a69985ebcf3c1c44d6e69e5a29c1044743cd9e44d4bc9bb6886f83a73966
|
|
Content-Transfer-Encoding: quoted-printable
|
|
Content-Disposition: inline
|
|
Content-Type: text/html
|
|
|
|
<p>MOVE move Move</p>
|
|
--a69985ebcf3c1c44d6e69e5a29c1044743cd9e44d4bc9bb6886f83a73966--
|
|
|
|
--c84d60b253aa6caee345c73e717ad59b1975448bbdfad7a23ac4d76e022d--`
|
|
|
|
deleteEmail := `DKIM-Signature: a=rsa-sha256; bh=dNtHGqd1NbRj0WSwrJmPsqAcAy3h/4kZK2HFQ0Asld8=;
|
|
c=simple/simple; d=jinnrry.com;
|
|
h=Content-Type:Mime-Version:Subject:To:From:Date; s=default; t=1693992495;
|
|
v=1;
|
|
b=QllU8lqGdoOMaGYp8d13oWytb7+RebqKjq4y8Rs/kOeQxoE8dSEVliK3eBiXidsNTdDtkTqf
|
|
eiwjyRBK92NVCYprdJqLbu9qZ39BC2lk3NXttTSJ1+1ZZ/bGtIW5JIYn2pToED0MqVVkxGFUtl+
|
|
qFmc4mWo5a4Mbij7xaAB3uJtHpBDt7q4Ovr2hiMetQv7YrhZvCt/xrH8Q9YzZ6xzFUL5ekW40eH
|
|
oWElU1GyVBHWCKh31aweyhA+1XLPYojjREQYd4svRqTbSFSsBqFwFIUGdnyJh2WgmF8eucmttAw
|
|
oRhgzyZkHL1jAskKFBpO10SDReyk50Cvc+0kSLj+QcUpg==
|
|
Content-Type: multipart/mixed;
|
|
boundary=bdfa9bf94e22e218105281e06bd59bd6df3ce70e71367bf49fbe73301af3
|
|
Mime-Version: 1.0
|
|
Subject: test
|
|
To: <t@jiangwei.one>
|
|
From: "i" <i@jinnrry.com>
|
|
Date: Wed, 06 Sep 2023 17:28:15 +0800
|
|
|
|
--bdfa9bf94e22e218105281e06bd59bd6df3ce70e71367bf49fbe73301af3
|
|
Content-Type: multipart/alternative;
|
|
boundary=7352524eaae801790245f6bf095460fd1f4e01f5748b4dba48635bf59b04
|
|
|
|
--7352524eaae801790245f6bf095460fd1f4e01f5748b4dba48635bf59b04
|
|
Content-Transfer-Encoding: quoted-printable
|
|
Content-Disposition: inline
|
|
Content-Type: text/plain
|
|
|
|
Delete
|
|
--7352524eaae801790245f6bf095460fd1f4e01f5748b4dba48635bf59b04
|
|
Content-Transfer-Encoding: quoted-printable
|
|
Content-Disposition: inline
|
|
Content-Type: text/html
|
|
|
|
<p>Delete</p>
|
|
--7352524eaae801790245f6bf095460fd1f4e01f5748b4dba48635bf59b04--
|
|
|
|
--bdfa9bf94e22e218105281e06bd59bd6df3ce70e71367bf49fbe73301af3--`
|
|
|
|
s := Session{
|
|
RemoteAddress: net.TCPAddrFromAddrPort(netip.AddrPortFrom(netip.AddrFrom4([4]byte{}), 25)),
|
|
Ctx: &context.Context{},
|
|
}
|
|
|
|
s.Data(bytes.NewReader([]byte(deleteEmail)))
|
|
s.Data(bytes.NewReader([]byte(readEmail)))
|
|
s.Data(bytes.NewReader([]byte(forwardEmail)))
|
|
s.Data(bytes.NewReader([]byte(moveEmail)))
|
|
}
|
|
|
|
func TestRuleRead(t *testing.T) {
|
|
testInit()
|
|
|
|
readEmail := `DKIM-Signature: a=rsa-sha256; bh=JcCDj6edb1bAwRbcFZ63plFZOeB5AdGWLE/PQ2FQ1Tc=;
|
|
c=simple/simple; d=jinnrry.com;
|
|
h=Content-Type:Mime-Version:Subject:To:From:Date; s=default; t=1693992600;
|
|
v=1;
|
|
b=rwlqSkDFKYH42pA1jsajemaw+4YdeLHPeqV4mLQrRdihgma1VSvXl5CEOur/KuwQuUarr2cu
|
|
SntWrHE6+RnDaQcPEHbkgoMjEJw5+VPwkIvE6VSlMIB7jg93mGzvN2yjheWTePZ+cVPjOaIrgir
|
|
wiT24hkrTHp+ONT8XoS0sDuY+ieyBZp/GCv/YvgE4t0JEkNozMAVWotrXxaICDzZoWP3NNmKLqg
|
|
6He6zwWAl51r3W5R5weGBi6A/FqlHgHZGroXnNi+wolDuN6pQiVAJ7MZ6hboPCbCCRrBQDTdor5
|
|
wEI2+MwlJ/d2f17wxoGmluCewbeYttuVcpUOVwACJKw3g==
|
|
Content-Type: multipart/mixed;
|
|
boundary=9e33a130a8a976102a93e296d6408d228e151f7841ca9ee0d777234fd6f3
|
|
Mime-Version: 1.0
|
|
Subject: read
|
|
To: <t@jiangwei.one>
|
|
From: "i" <i@jinnrry.com>
|
|
Date: Wed, 06 Sep 2023 17:30:00 +0800
|
|
|
|
--9e33a130a8a976102a93e296d6408d228e151f7841ca9ee0d777234fd6f3
|
|
Content-Type: multipart/alternative;
|
|
boundary=54a95f3429f3cdb342383db10293780bed341f8dc20d2f876eb0853e3884
|
|
|
|
--54a95f3429f3cdb342383db10293780bed341f8dc20d2f876eb0853e3884
|
|
Content-Transfer-Encoding: quoted-printable
|
|
Content-Disposition: inline
|
|
Content-Type: text/plain
|
|
|
|
12 aRead 1sadf
|
|
--54a95f3429f3cdb342383db10293780bed341f8dc20d2f876eb0853e3884
|
|
Content-Transfer-Encoding: quoted-printable
|
|
Content-Disposition: inline
|
|
Content-Type: text/html
|
|
|
|
<p>12 aRead 1sadf</p>
|
|
--54a95f3429f3cdb342383db10293780bed341f8dc20d2f876eb0853e3884--
|
|
|
|
--9e33a130a8a976102a93e296d6408d228e151f7841ca9ee0d777234fd6f3--`
|
|
|
|
s := Session{
|
|
RemoteAddress: net.TCPAddrFromAddrPort(netip.AddrPortFrom(netip.AddrFrom4([4]byte{}), 25)),
|
|
Ctx: &context.Context{},
|
|
}
|
|
|
|
s.Data(bytes.NewReader([]byte(readEmail)))
|
|
|
|
}
|
|
|
|
func TestRuleDelete(t *testing.T) {
|
|
testInit()
|
|
|
|
deleteEmail := `DKIM-Signature: a=rsa-sha256; bh=dNtHGqd1NbRj0WSwrJmPsqAcAy3h/4kZK2HFQ0Asld8=;
|
|
c=simple/simple; d=jinnrry.com;
|
|
h=Content-Type:Mime-Version:Subject:To:From:Date; s=default; t=1693992495;
|
|
v=1;
|
|
b=QllU8lqGdoOMaGYp8d13oWytb7+RebqKjq4y8Rs/kOeQxoE8dSEVliK3eBiXidsNTdDtkTqf
|
|
eiwjyRBK92NVCYprdJqLbu9qZ39BC2lk3NXttTSJ1+1ZZ/bGtIW5JIYn2pToED0MqVVkxGFUtl+
|
|
qFmc4mWo5a4Mbij7xaAB3uJtHpBDt7q4Ovr2hiMetQv7YrhZvCt/xrH8Q9YzZ6xzFUL5ekW40eH
|
|
oWElU1GyVBHWCKh31aweyhA+1XLPYojjREQYd4svRqTbSFSsBqFwFIUGdnyJh2WgmF8eucmttAw
|
|
oRhgzyZkHL1jAskKFBpO10SDReyk50Cvc+0kSLj+QcUpg==
|
|
Content-Type: multipart/mixed;
|
|
boundary=bdfa9bf94e22e218105281e06bd59bd6df3ce70e71367bf49fbe73301af3
|
|
Mime-Version: 1.0
|
|
Subject: test
|
|
To: <t@jiangwei.one>
|
|
From: "i" <i@jinnrry.com>
|
|
Date: Wed, 06 Sep 2023 17:28:15 +0800
|
|
|
|
--bdfa9bf94e22e218105281e06bd59bd6df3ce70e71367bf49fbe73301af3
|
|
Content-Type: multipart/alternative;
|
|
boundary=7352524eaae801790245f6bf095460fd1f4e01f5748b4dba48635bf59b04
|
|
|
|
--7352524eaae801790245f6bf095460fd1f4e01f5748b4dba48635bf59b04
|
|
Content-Transfer-Encoding: quoted-printable
|
|
Content-Disposition: inline
|
|
Content-Type: text/plain
|
|
|
|
Delete
|
|
--7352524eaae801790245f6bf095460fd1f4e01f5748b4dba48635bf59b04
|
|
Content-Transfer-Encoding: quoted-printable
|
|
Content-Disposition: inline
|
|
Content-Type: text/html
|
|
|
|
<p>Delete</p>
|
|
--7352524eaae801790245f6bf095460fd1f4e01f5748b4dba48635bf59b04--
|
|
|
|
--bdfa9bf94e22e218105281e06bd59bd6df3ce70e71367bf49fbe73301af3--`
|
|
|
|
s := Session{
|
|
RemoteAddress: net.TCPAddrFromAddrPort(netip.AddrPortFrom(netip.AddrFrom4([4]byte{}), 25)),
|
|
Ctx: &context.Context{},
|
|
}
|
|
|
|
s.Data(bytes.NewReader([]byte(deleteEmail)))
|
|
|
|
}
|
|
|
|
func TestNullCC(t *testing.T) {
|
|
testInit()
|
|
|
|
emailData := `Date: Mon, 29 Jan 2024 16:54:30 +0800
|
|
Return-Path: 1231@111.com
|
|
From: =?utf-8?B?b2VhdHY=?= 1231@111.com
|
|
To: =?utf-8?B?ODQ2ODAzOTY=?= 123213@qq.com
|
|
Cc:
|
|
Bcc:
|
|
Reply-To: <>
|
|
Subject: =?utf-8?B?6L+Z5piv5LiA5bCB5p2l6IeqUmVsYXhEcmFtYeeahOmCruS7tg==?=
|
|
Message-ID: <cf43cc780b72dad392d4f90dfced88a8@1231@111.com>
|
|
X-Priority: 3
|
|
X-Mailer: Mailer (https://github.com/txthinking/Mailer)
|
|
MIME-Version: 1.0
|
|
Content-Type: multipart/alternative; boundary="6edc2ef285d93010a080caccc858c67b"
|
|
|
|
--6edc2ef285d93010a080caccc858c67b
|
|
Content-Type: text/plain; charset="UTF-8"
|
|
Content-Transfer-Encoding: base64
|
|
|
|
PGRpdiBzdHlsZT0ibWluLWhlaWdodDo1NTBweDsgcGFkZGluZzogMTAwcHggNTVweCAyMDBweDsi
|
|
Pui/meaYr+S4gOWwgeadpeiHqlJlbGF4RHJhbWHnmoTmoKHpqozpgq7ku7Ys55So5LqO5qCh6aqM
|
|
6YKu5Lu26YWN572u5piv5ZCm5q2j5bi4ITwvZGl2Pg==
|
|
|
|
--6edc2ef285d93010a080caccc858c67b
|
|
Content-Type: text/html; charset="UTF-8"
|
|
Content-Transfer-Encoding: base64
|
|
|
|
PGRpdiBzdHlsZT0ibWluLWhlaWdodDo1NTBweDsgcGFkZGluZzogMTAwcHggNTVweCAyMDBweDsi
|
|
Pui/meaYr+S4gOWwgeadpeiHqlJlbGF4RHJhbWHnmoTmoKHpqozpgq7ku7Ys55So5LqO5qCh6aqM
|
|
6YKu5Lu26YWN572u5piv5ZCm5q2j5bi4ITwvZGl2Pg==
|
|
|
|
--6edc2ef285d93010a080caccc858c67b--`
|
|
s := Session{
|
|
RemoteAddress: net.TCPAddrFromAddrPort(netip.AddrPortFrom(netip.AddrFrom4([4]byte{}), 25)),
|
|
Ctx: &context.Context{},
|
|
}
|
|
|
|
s.Data(bytes.NewReader([]byte(emailData)))
|
|
}
|
|
|
|
func TestRuleMove(t *testing.T) {
|
|
testInit()
|
|
|
|
moveEmail := `DKIM-Signature: a=rsa-sha256; bh=YQfG/wlHGhky6FNmpIwgDYDOc/uyivdBv+9S02Z04xY=;
|
|
c=simple/simple; d=jinnrry.com;
|
|
h=Content-Type:Mime-Version:Subject:To:From:Date; s=default; t=1693992542;
|
|
v=1;
|
|
b=IhxswOCq8I7CmCas1EMp+n8loR7illqlF0IJC6eN1+OLjI/E5BPzpP4HWkyqaAkd0Vn9i+Bn
|
|
MVb5kNHZ2S7qt0rqAAc6Atc0i9WpLEI3Cng+VDn+difcMZlJSAkhLLn2sUsS4Fzqqo3Cbw62qSO
|
|
TgnWRmlj9aM+5xfGcl/76WOvQQpahJbGg6Go51kFMeHVom/VeGKIgFBCeMe37T/LS03c3pAV8gA
|
|
i6Zy3GYE57W/qU3oCzaGeS3n5zom/i74H4VipiVIMX/OBNYhdHWrP8vyjvzLFpJlXp6RvzcRl0P
|
|
ytyiCZfE8G7fAFntp20LW70Y5Xgqqczk1jR578UDczVoA==
|
|
Content-Type: multipart/mixed;
|
|
boundary=c84d60b253aa6caee345c73e717ad59b1975448bbdfad7a23ac4d76e022d
|
|
Mime-Version: 1.0
|
|
Subject: Move
|
|
To: <t@jiangwei.one>
|
|
From: "i" <i@jinnrry.com>
|
|
Date: Wed, 06 Sep 2023 17:29:02 +0800
|
|
|
|
--c84d60b253aa6caee345c73e717ad59b1975448bbdfad7a23ac4d76e022d
|
|
Content-Type: multipart/alternative;
|
|
boundary=a69985ebcf3c1c44d6e69e5a29c1044743cd9e44d4bc9bb6886f83a73966
|
|
|
|
--a69985ebcf3c1c44d6e69e5a29c1044743cd9e44d4bc9bb6886f83a73966
|
|
Content-Transfer-Encoding: quoted-printable
|
|
Content-Disposition: inline
|
|
Content-Type: text/plain
|
|
|
|
MOVE move Move
|
|
--a69985ebcf3c1c44d6e69e5a29c1044743cd9e44d4bc9bb6886f83a73966
|
|
Content-Transfer-Encoding: quoted-printable
|
|
Content-Disposition: inline
|
|
Content-Type: text/html
|
|
|
|
<p>MOVE move Move</p>
|
|
--a69985ebcf3c1c44d6e69e5a29c1044743cd9e44d4bc9bb6886f83a73966--
|
|
|
|
--c84d60b253aa6caee345c73e717ad59b1975448bbdfad7a23ac4d76e022d--`
|
|
|
|
s := Session{
|
|
RemoteAddress: net.TCPAddrFromAddrPort(netip.AddrPortFrom(netip.AddrFrom4([4]byte{}), 25)),
|
|
Ctx: &context.Context{},
|
|
}
|
|
|
|
s.Data(bytes.NewReader([]byte(moveEmail)))
|
|
}
|
|
|
|
func TestQAEmailForward(t *testing.T) {
|
|
testInit()
|
|
data := `Mime-Version: 1.0
|
|
X-QQ-MIME: TCMime 1.0 by Tencent
|
|
X-Mailer: QQMail 2.x
|
|
X-QQ-Mailer: QQMail 2.x
|
|
Message-ID: tencent_D82739970C66D2BFBA23F4A3@qq.com
|
|
Subject: =?UTF-8?B?5rWL6K+V5Y+R6YCB?=
|
|
Date: Wed, 10 Apr 2024 11:11:12 +0800 (GMT+08:00)
|
|
From: =?UTF-8?B?YWRtaW5AamlubnJyeS5jb20=?=<admin@jinnrry.com>
|
|
To: =?UTF-8?B??=<test@jinnrry.com>
|
|
Content-Type: multipart/alternative;
|
|
boundary="----=_Part_174_107154538.1712718674768"
|
|
|
|
------=_Part_174_107154538.1712718674768
|
|
Content-Type: text/plain; charset=us-ascii
|
|
Content-Transfer-Encoding: base64
|
|
|
|
|
|
------=_Part_174_107154538.1712718674768
|
|
Content-Type: text/html; charset=UTF-8
|
|
Content-Transfer-Encoding: base64
|
|
|
|
PGRpdj7ov5nph4zmmK/lhoXlrrk8L2Rpdj48ZGl2PjwhLS1lbXB0eXNpZ24tLT48L2Rpdj4=
|
|
------=_Part_174_107154538.1712718674768--`
|
|
|
|
s := Session{
|
|
RemoteAddress: net.TCPAddrFromAddrPort(netip.AddrPortFrom(netip.AddrFrom4([4]byte{}), 25)),
|
|
Ctx: &context.Context{},
|
|
}
|
|
|
|
s.Data(bytes.NewReader([]byte(data)))
|
|
}
|