mirror of
https://github.com/chatmail/relay.git
synced 2026-08-30 20:13:14 +00:00
fix(logs): Log From address instead of envelope MAIL FROM. (#66)
Fixes #64 Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com>
This commit is contained in:
@@ -35,8 +35,6 @@ impl SmtpHandler for IncomingBeforeQueueHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async fn check_data(&self, envelope: &Envelope) -> Result<(), String> {
|
async fn check_data(&self, envelope: &Envelope) -> Result<(), String> {
|
||||||
log::debug!("Processing DATA message from {}", envelope.mail_from);
|
|
||||||
|
|
||||||
let message = match parse_mail(&envelope.data) {
|
let message = match parse_mail(&envelope.data) {
|
||||||
Ok(m) => m,
|
Ok(m) => m,
|
||||||
Err(e) => return Err(format!("500 Failed to parse message: {}", e)),
|
Err(e) => return Err(format!("500 Failed to parse message: {}", e)),
|
||||||
@@ -53,6 +51,8 @@ impl SmtpHandler for IncomingBeforeQueueHandler {
|
|||||||
return Err(format!("500 Invalid FROM header: {from_header}"));
|
return Err(format!("500 Invalid FROM header: {from_header}"));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
log::debug!("Processing DATA message from {from_addr}");
|
||||||
|
|
||||||
let from_domain = AddressDomain::from_str(&from_addr).map_err(|e| e.smtp_response())?;
|
let from_domain = AddressDomain::from_str(&from_addr).map_err(|e| e.smtp_response())?;
|
||||||
|
|
||||||
match from_domain {
|
match from_domain {
|
||||||
@@ -108,7 +108,7 @@ impl SmtpHandler for IncomingBeforeQueueHandler {
|
|||||||
|
|
||||||
for recipient in &envelope.rcpt_to {
|
for recipient in &envelope.rcpt_to {
|
||||||
if !self.config.is_cleartext_ok(recipient) {
|
if !self.config.is_cleartext_ok(recipient) {
|
||||||
log::warn!("Rejected unencrypted mail from: {}", envelope.mail_from);
|
log::warn!("Rejected unencrypted mail from: {from_addr}");
|
||||||
return Err(ENCRYPTION_NEEDED_523.to_string());
|
return Err(ENCRYPTION_NEEDED_523.to_string());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,8 +56,6 @@ impl SmtpHandler for OutgoingBeforeQueueHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async fn check_data(&self, envelope: &Envelope) -> Result<(), String> {
|
async fn check_data(&self, envelope: &Envelope) -> Result<(), String> {
|
||||||
log::debug!("Processing DATA message from {}", envelope.mail_from);
|
|
||||||
|
|
||||||
let message = match parse_mail(&envelope.data) {
|
let message = match parse_mail(&envelope.data) {
|
||||||
Ok(m) => m,
|
Ok(m) => m,
|
||||||
Err(e) => return Err(format!("500 Failed to parse message: {}", e)),
|
Err(e) => return Err(format!("500 Failed to parse message: {}", e)),
|
||||||
@@ -75,6 +73,8 @@ impl SmtpHandler for OutgoingBeforeQueueHandler {
|
|||||||
let from_addr = extract_address(&from_header)
|
let from_addr = extract_address(&from_header)
|
||||||
.ok_or(format!("500 Invalid FROM header: {from_header}"))?;
|
.ok_or(format!("500 Invalid FROM header: {from_header}"))?;
|
||||||
|
|
||||||
|
log::debug!("Processing DATA message from {from_addr}");
|
||||||
|
|
||||||
if !envelope.mail_from.eq_ignore_ascii_case(&from_addr) {
|
if !envelope.mail_from.eq_ignore_ascii_case(&from_addr) {
|
||||||
return Err(format!(
|
return Err(format!(
|
||||||
"500 Invalid FROM <{}> for <{}>",
|
"500 Invalid FROM <{}> for <{}>",
|
||||||
@@ -91,18 +91,14 @@ impl SmtpHandler for OutgoingBeforeQueueHandler {
|
|||||||
log::info!("Outgoing: Filtering unencrypted mail.");
|
log::info!("Outgoing: Filtering unencrypted mail.");
|
||||||
|
|
||||||
// Allow passthrough senders
|
// Allow passthrough senders
|
||||||
if self
|
if self.config.passthrough_senders.contains(&from_addr) {
|
||||||
.config
|
|
||||||
.passthrough_senders
|
|
||||||
.contains(&envelope.mail_from)
|
|
||||||
{
|
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Allow self-sent Autocrypt Setup Message
|
// Allow self-sent Autocrypt Setup Message
|
||||||
if envelope.rcpt_to.len() == 1
|
if envelope.rcpt_to.len() == 1
|
||||||
&& let Some(rcpt_to) = envelope.rcpt_to.first()
|
&& let Some(rcpt_to) = envelope.rcpt_to.first()
|
||||||
&& *rcpt_to == envelope.mail_from
|
&& *rcpt_to == from_addr
|
||||||
{
|
{
|
||||||
let subject = message
|
let subject = message
|
||||||
.headers
|
.headers
|
||||||
@@ -115,7 +111,7 @@ impl SmtpHandler for OutgoingBeforeQueueHandler {
|
|||||||
|
|
||||||
for recipient in &envelope.rcpt_to {
|
for recipient in &envelope.rcpt_to {
|
||||||
if !recipient_matches_passthrough(recipient, &self.config.passthrough_recipients) {
|
if !recipient_matches_passthrough(recipient, &self.config.passthrough_recipients) {
|
||||||
log::warn!("Rejected unencrypted mail from: {}", envelope.mail_from);
|
log::warn!("Rejected unencrypted mail from: {from_addr}");
|
||||||
return Err(ENCRYPTION_NEEDED_523.to_string());
|
return Err(ENCRYPTION_NEEDED_523.to_string());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user