* [pmg-devel] [RFC pmg-api] trim Message-ID when parsing E-mail
@ 2025-04-14 15:36 Hannes Duerr
2025-04-17 14:31 ` Stoiko Ivanov
0 siblings, 1 reply; 2+ messages in thread
From: Hannes Duerr @ 2025-04-14 15:36 UTC (permalink / raw)
To: pmg-devel
when we currently parse emails we do not remove trailing newlines from
the message-id. The consequence of this is that if you use the rule
system macro __MSGID__, there is also a newline at the end of the
string. This in turn leads to problems if you create a rule and want to
add something after the message ID.
Signed-off-by: Hannes Duerr <h.duerr@proxmox.com>
---
Notes:
I'm not 100% sure whether we can simply trim the newline without any
problems. I have searched through the code a bit, but I have not come
across any problematic areas. We use the msgid for the log messages, but
it is in the last position there and a newline is set. This means that
the log message does not change
If anyone has any objections or other ideas on how to tackle the
problem, I'd be interested to hear them
src/PMG/MailQueue.pm | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/PMG/MailQueue.pm b/src/PMG/MailQueue.pm
index 4e37cb9..2af95bd 100644
--- a/src/PMG/MailQueue.pm
+++ b/src/PMG/MailQueue.pm
@@ -4,6 +4,7 @@ use strict;
use warnings;
use PVE::SafeSyslog;
+use PVE::Tools qw (trim);
use MIME::Parser;
use IO::File;
use Encode;
@@ -394,7 +395,7 @@ sub parse_mail {
PMG::MIMEUtils::fixup_multipart($entity);
if ((my $idcount = $entity->head->count ('Message-Id')) > 0) {
- $self->msgid ($entity->head->get ('Message-Id', $idcount - 1));
+ $self->msgid (trim($entity->head->get ('Message-Id', $idcount - 1)));
}
# fixme: add parse_time to statistic database
--
2.39.5
_______________________________________________
pmg-devel mailing list
pmg-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pmg-devel
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [pmg-devel] [RFC pmg-api] trim Message-ID when parsing E-mail
2025-04-14 15:36 [pmg-devel] [RFC pmg-api] trim Message-ID when parsing E-mail Hannes Duerr
@ 2025-04-17 14:31 ` Stoiko Ivanov
0 siblings, 0 replies; 2+ messages in thread
From: Stoiko Ivanov @ 2025-04-17 14:31 UTC (permalink / raw)
To: Hannes Duerr; +Cc: pmg-devel
Thanks for the patch!
generally looks ok - and could be merged - some nits/questions inline (can
fixup most upon applying):
On Mon, 14 Apr 2025 17:36:56 +0200
Hannes Duerr <h.duerr@proxmox.com> wrote:
> when we currently parse emails we do not remove trailing newlines from
> the message-id. The consequence of this is that if you use the rule
> system macro __MSGID__, there is also a newline at the end of the
> string. This in turn leads to problems if you create a rule and want to
> add something after the message ID.
As we talked off-list about this I know the context - but mentioning the
case of - modifying the message-id, after stripping <> and the domain to
not leak information would help people in the future remembering why this
was added.
>
> Signed-off-by: Hannes Duerr <h.duerr@proxmox.com>
> ---
>
> Notes:
> I'm not 100% sure whether we can simply trim the newline without any
> problems. I have searched through the code a bit, but I have not come
> across any problematic areas. We use the msgid for the log messages, but
I was surprised that the newline might be there at all - but the docs of
MIME::Head (https://metacpan.org/pod/MIME::Head) say so:
NOTE: The header(s) returned may end with a newline. If you don't want this, then chomp the return value.
Else I looked through our code and also think that this is read once, and
then used in a log-message and for adding it as template variable
https://git.proxmox.com/?p=pmg-api.git;a=blob;f=src/bin/pmg-smtp-filter;h=32bad7b881733147e5defe64a590dc709669dd1a;hb=HEAD#l184
> it is in the last position there and a newline is set. This means that
> the log message does not change
> If anyone has any objections or other ideas on how to tackle the
> problem, I'd be interested to hear them
How did you test this - I gave it a quick spin with a modify field object
(adding a X-my-msgid header) and it looked ok - but out of curiosity?
>
> src/PMG/MailQueue.pm | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/src/PMG/MailQueue.pm b/src/PMG/MailQueue.pm
> index 4e37cb9..2af95bd 100644
> --- a/src/PMG/MailQueue.pm
> +++ b/src/PMG/MailQueue.pm
> @@ -4,6 +4,7 @@ use strict;
> use warnings;
>
> use PVE::SafeSyslog;
> +use PVE::Tools qw (trim);
> use MIME::Parser;
> use IO::File;
> use Encode;
> @@ -394,7 +395,7 @@ sub parse_mail {
> PMG::MIMEUtils::fixup_multipart($entity);
>
> if ((my $idcount = $entity->head->count ('Message-Id')) > 0) {
> - $self->msgid ($entity->head->get ('Message-Id', $idcount - 1));
> + $self->msgid (trim($entity->head->get ('Message-Id', $idcount - 1)));
nit: when touching this you could remove the space `msgid(...)` vs
`msgid (...)`
> }
>
> # fixme: add parse_time to statistic database
_______________________________________________
pmg-devel mailing list
pmg-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pmg-devel
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2025-04-17 14:31 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-04-14 15:36 [pmg-devel] [RFC pmg-api] trim Message-ID when parsing E-mail Hannes Duerr
2025-04-17 14:31 ` Stoiko Ivanov
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.