mirror of
https://github.com/stalwartlabs/mail-server.git
synced 2025-10-08 19:45:49 +08:00
Update SMTP status codes (#1109)
This commit is contained in:
parent
5e5771e033
commit
4eca415e7b
6 changed files with 11 additions and 11 deletions
|
@ -101,7 +101,7 @@ impl FormHandler for Server {
|
||||||
if let Some(domain) = from_email.rsplit_once('@').and_then(|(local, domain)| {
|
if let Some(domain) = from_email.rsplit_once('@').and_then(|(local, domain)| {
|
||||||
if !local.is_empty()
|
if !local.is_empty()
|
||||||
&& domain.contains('.')
|
&& domain.contains('.')
|
||||||
&& psl::suffix(domain.as_bytes()).is_some()
|
&& psl::domain(domain.as_bytes()).is_some_and(|d| d.suffix().typ().is_some())
|
||||||
{
|
{
|
||||||
Some(domain)
|
Some(domain)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -204,7 +204,7 @@ impl<T: SessionStream> Session<T> {
|
||||||
SpanId = self.data.session_id,
|
SpanId = self.data.session_id,
|
||||||
);
|
);
|
||||||
|
|
||||||
self.write(b"421 4.3.0 Too many authentication errors, disconnecting.\r\n")
|
self.write(b"455 4.3.0 Too many authentication errors, disconnecting.\r\n")
|
||||||
.await?;
|
.await?;
|
||||||
Err(())
|
Err(())
|
||||||
}
|
}
|
||||||
|
|
|
@ -850,7 +850,7 @@ impl<T: SessionStream> Session<T> {
|
||||||
Limit = self.data.messages_sent
|
Limit = self.data.messages_sent
|
||||||
);
|
);
|
||||||
|
|
||||||
self.write(b"451 4.4.5 Maximum number of messages per session exceeded.\r\n")
|
self.write(b"452 4.4.5 Maximum number of messages per session exceeded.\r\n")
|
||||||
.await?;
|
.await?;
|
||||||
Ok(false)
|
Ok(false)
|
||||||
}
|
}
|
||||||
|
|
|
@ -513,7 +513,7 @@ impl<T: SessionStream> Session<T> {
|
||||||
);
|
);
|
||||||
|
|
||||||
self.data.mail_from = None;
|
self.data.mail_from = None;
|
||||||
self.write(b"451 4.4.5 Rate limit exceeded, try again later.\r\n")
|
self.write(b"452 4.4.5 Rate limit exceeded, try again later.\r\n")
|
||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,7 +50,7 @@ impl<T: SessionStream> Session<T> {
|
||||||
SpanId = self.data.session_id,
|
SpanId = self.data.session_id,
|
||||||
Limit = self.params.rcpt_max,
|
Limit = self.params.rcpt_max,
|
||||||
);
|
);
|
||||||
return self.write(b"451 4.5.3 Too many recipients.\r\n").await;
|
return self.write(b"455 4.5.3 Too many recipients.\r\n").await;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify parameters
|
// Verify parameters
|
||||||
|
@ -347,7 +347,7 @@ impl<T: SessionStream> Session<T> {
|
||||||
return self
|
return self
|
||||||
.write(
|
.write(
|
||||||
concat!(
|
concat!(
|
||||||
"422 4.2.2 Greylisted, please try ",
|
"452 4.2.2 Greylisted, please try ",
|
||||||
"again in a few moments.\r\n"
|
"again in a few moments.\r\n"
|
||||||
)
|
)
|
||||||
.as_bytes(),
|
.as_bytes(),
|
||||||
|
@ -385,7 +385,7 @@ impl<T: SessionStream> Session<T> {
|
||||||
|
|
||||||
self.data.rcpt_to.pop();
|
self.data.rcpt_to.pop();
|
||||||
return self
|
return self
|
||||||
.write(b"451 4.4.5 Rate limit exceeded, try again later.\r\n")
|
.write(b"452 4.4.5 Rate limit exceeded, try again later.\r\n")
|
||||||
.await;
|
.await;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -448,7 +448,7 @@ impl<T: SessionStream> Session<T> {
|
||||||
if !has_too_many_errors {
|
if !has_too_many_errors {
|
||||||
self.write(response).await
|
self.write(response).await
|
||||||
} else {
|
} else {
|
||||||
self.write(b"421 4.3.0 Too many errors, disconnecting.\r\n")
|
self.write(b"451 4.3.0 Too many errors, disconnecting.\r\n")
|
||||||
.await?;
|
.await?;
|
||||||
Err(())
|
Err(())
|
||||||
}
|
}
|
||||||
|
|
|
@ -169,7 +169,7 @@ impl<T: SessionStream> Session<T> {
|
||||||
}
|
}
|
||||||
} else if bytes_read > self.data.bytes_left {
|
} else if bytes_read > self.data.bytes_left {
|
||||||
self
|
self
|
||||||
.write(format!("451 4.7.28 {} Session exceeded transfer quota.\r\n", self.hostname).as_bytes())
|
.write(format!("452 4.7.28 {} Session exceeded transfer quota.\r\n", self.hostname).as_bytes())
|
||||||
.await
|
.await
|
||||||
.ok();
|
.ok();
|
||||||
|
|
||||||
|
@ -181,7 +181,7 @@ impl<T: SessionStream> Session<T> {
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
self
|
self
|
||||||
.write(format!("453 4.3.2 {} Session open for too long.\r\n", self.hostname).as_bytes())
|
.write(format!("421 4.3.2 {} Session open for too long.\r\n", self.hostname).as_bytes())
|
||||||
.await
|
.await
|
||||||
.ok();
|
.ok();
|
||||||
|
|
||||||
|
@ -246,7 +246,7 @@ impl<T: SessionStream> Session<T> {
|
||||||
Reason = "Server shutting down",
|
Reason = "Server shutting down",
|
||||||
CausedBy = trc::location!()
|
CausedBy = trc::location!()
|
||||||
);
|
);
|
||||||
self.write(b"421 4.3.0 Server shutting down.\r\n").await.ok();
|
self.write(format!("421 4.3.0 {} Server shutting down.\r\n", self.hostname).as_bytes()).await.ok();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Reference in a new issue