Fixed Sieve redirect of unmodified messages
This commit is contained in:
@@ -278,7 +278,12 @@ impl SMTP {
|
||||
}
|
||||
|
||||
// Queue message
|
||||
if let Some(raw_message) = messages.get(message_id - 1) {
|
||||
let raw_message = if message_id > 0 {
|
||||
messages.get(message_id - 1).map(|m| m.as_slice())
|
||||
} else {
|
||||
instance.message().raw_message().into()
|
||||
};
|
||||
if let Some(raw_message) = raw_message {
|
||||
let headers = if !self.sieve.config.sign.is_empty() {
|
||||
let mut headers = Vec::new();
|
||||
for dkim in &self.sieve.config.sign {
|
||||
|
||||
@@ -7,6 +7,11 @@ if envelope :localpart :is "to" "thomas" {
|
||||
discard;
|
||||
}
|
||||
|
||||
if envelope :localpart :is "to" "bob" {
|
||||
redirect "redirect@somewhere.email";
|
||||
discard;
|
||||
}
|
||||
|
||||
if envelope :localpart :is "to" "bill" {
|
||||
reject "Bill cannot receive messages.";
|
||||
stop;
|
||||
|
||||
@@ -320,7 +320,6 @@ async fn sieve_scripts() {
|
||||
redirect.recipients.first().unwrap().address,
|
||||
"redirect@here.email"
|
||||
);
|
||||
|
||||
redirect
|
||||
.read_lines()
|
||||
.assert_contains("From: no-reply@my.domain")
|
||||
@@ -330,6 +329,31 @@ async fn sieve_scripts() {
|
||||
.assert_not_contains("From: Joe SixPack <joe@football.example.com>");
|
||||
qr.assert_empty_queue();
|
||||
|
||||
// Expect an intact redirected message
|
||||
session
|
||||
.send_message(
|
||||
"test@example.net",
|
||||
&["bob@foobar.gov"],
|
||||
"test:no_dkim",
|
||||
"250",
|
||||
)
|
||||
.await;
|
||||
let redirect = qr.read_event().await.unwrap_message();
|
||||
assert_eq!(redirect.return_path, "");
|
||||
assert_eq!(redirect.recipients.len(), 1);
|
||||
assert_eq!(
|
||||
redirect.recipients.first().unwrap().address,
|
||||
"redirect@somewhere.email"
|
||||
);
|
||||
redirect
|
||||
.read_lines()
|
||||
.assert_not_contains("From: no-reply@my.domain")
|
||||
.assert_contains("To: Suzie Q <suzie@shopping.example.net>")
|
||||
.assert_contains("Subject: Is dinner ready?")
|
||||
.assert_contains("Message-ID: <20030712040037.46341.5F8J@football.example.com>")
|
||||
.assert_contains("From: Joe SixPack <joe@football.example.com>");
|
||||
qr.assert_empty_queue();
|
||||
|
||||
// Test pipes
|
||||
session.data.remote_ip = "10.0.0.123".parse().unwrap();
|
||||
session
|
||||
|
||||
Reference in New Issue
Block a user