* git-send-email generates mail with invalid Message-Id @ 2009-07-28 2:46 Frans Pop 2009-07-28 9:17 ` Erik Faye-Lund 0 siblings, 1 reply; 13+ messages in thread From: Frans Pop @ 2009-07-28 2:46 UTC (permalink / raw) To: git I follow lkml through a local news server (inn2), using a mail2news script to convert incoming mails to news items. Occasionally I get the following error in my system logs: innd: localhost:18 bad_messageid <12487185672026-git-send-email-> The problem is that a Message-Id is supposed (RFC 822) to end in a domain part (...@example.com), but that's missing. I assume that this is a configuration issue in the git setup of the sender, but shouldn't git-send-email refuse to send out messages with an invalid Message-Id? Cheers, FJP ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: git-send-email generates mail with invalid Message-Id 2009-07-28 2:46 git-send-email generates mail with invalid Message-Id Frans Pop @ 2009-07-28 9:17 ` Erik Faye-Lund 2009-07-28 9:27 ` Thomas Rast 2009-07-28 10:14 ` Frans Pop 0 siblings, 2 replies; 13+ messages in thread From: Erik Faye-Lund @ 2009-07-28 9:17 UTC (permalink / raw) To: Frans Pop; +Cc: git On Tue, Jul 28, 2009 at 4:46 AM, Frans Pop<elendil@planet.nl> wrote: > The problem is that a Message-Id is supposed (RFC 822) to end in a domain > part (...@example.com), but that's missing. Correct. > I assume that this is a configuration issue in the git setup of the > sender, but shouldn't git-send-email refuse to send out messages with an > invalid Message-Id? Not quite. git-send-email generates these message-ids itself (those who contain "-git-send-email-", that is), and should as such be able to rely on them being generated correctly. However, I'm a bit curious as to how these ends up incorrect in the first place. The code in make_message_id tries to append the sender's e-mail to timestamp+"-git-send-email-", if that fails it tries the comitter's e-mail, then the author's e-mail. As a last resort, it tries to append "user@"+hostname. I'm no perl-expert, but the code looks pretty much correct to me. The problematic e-mails, are they coming from another user than you? Can you find out who that is, and check what git-version he or she runs? -- Erik "kusma" Faye-Lund kusmabite@gmail.com (+47) 986 59 656 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: git-send-email generates mail with invalid Message-Id 2009-07-28 9:17 ` Erik Faye-Lund @ 2009-07-28 9:27 ` Thomas Rast 2009-07-28 9:51 ` Erik Faye-Lund 2009-07-28 10:44 ` Nicolas Sebrecht 2009-07-28 10:14 ` Frans Pop 1 sibling, 2 replies; 13+ messages in thread From: Thomas Rast @ 2009-07-28 9:27 UTC (permalink / raw) To: Erik Faye-Lund; +Cc: Frans Pop, git Erik Faye-Lund wrote: > On Tue, Jul 28, 2009 at 4:46 AM, Frans Pop<elendil@planet.nl> wrote: > > I assume that this is a configuration issue in the git setup of the > > sender, but shouldn't git-send-email refuse to send out messages with an > > invalid Message-Id? > > Not quite. git-send-email generates these message-ids itself (those > who contain "-git-send-email-", that is), and should as such be able > to rely on them being generated correctly. [...] > I'm no perl-expert, but the code looks pretty much correct to me. git-format-patch generates its own message IDs if it needs them for threading, with gen_message_id() (in builtin-log.c). That one appends the committer email address blindly, without verifying that it has an @ in it. Blame the committer's broken config, I guess. The untested patch at the end might catch this, but then it's still a fair ways from correct address verification _and_ email addresses aren't required to have a hostname part. diff --git i/builtin-log.c w/builtin-log.c index fe8e4e1..7003784 100644 --- i/builtin-log.c +++ w/builtin-log.c @@ -604,9 +604,12 @@ static void gen_message_id(struct rev_info *info, char *base) const char *committer = git_committer_info(IDENT_WARN_ON_NO_NAME); const char *email_start = strrchr(committer, '<'); const char *email_end = strrchr(committer, '>'); + const char *email_at = strrchr(committer, '@'); struct strbuf buf = STRBUF_INIT; if (!email_start || !email_end || email_start > email_end - 1) die("Could not extract email from committer identity."); + if (!email_at || email_start > email_at - 1 || email_at > email_end - 1) + die ("Committer email address invalid, cannot form message-id"); strbuf_addf(&buf, "%s.%lu.git.%.*s", base, (unsigned long) time(NULL), (int)(email_end - email_start - 1), email_start + 1); ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: git-send-email generates mail with invalid Message-Id 2009-07-28 9:27 ` Thomas Rast @ 2009-07-28 9:51 ` Erik Faye-Lund 2009-07-28 10:03 ` Thomas Rast 2009-07-28 10:44 ` Nicolas Sebrecht 1 sibling, 1 reply; 13+ messages in thread From: Erik Faye-Lund @ 2009-07-28 9:51 UTC (permalink / raw) To: Thomas Rast; +Cc: Frans Pop, git On Tue, Jul 28, 2009 at 11:27 AM, Thomas Rast<trast@student.ethz.ch> wrote: > Erik Faye-Lund wrote: >> On Tue, Jul 28, 2009 at 4:46 AM, Frans Pop<elendil@planet.nl> wrote: >> > I assume that this is a configuration issue in the git setup of the >> > sender, but shouldn't git-send-email refuse to send out messages with an >> > invalid Message-Id? >> >> Not quite. git-send-email generates these message-ids itself (those >> who contain "-git-send-email-", that is), and should as such be able >> to rely on them being generated correctly. [...] >> I'm no perl-expert, but the code looks pretty much correct to me. > > git-format-patch generates its own message IDs if it needs them for > threading, with gen_message_id() (in builtin-log.c). That one appends > the committer email address blindly, without verifying that it has an > @ in it. That must be a separate issue (but quite possibly a valid one), since gen_message_id's ids dont' contain "-send-email-" like the message-id in the report does, no? -- Erik "kusma" Faye-Lund kusmabite@gmail.com (+47) 986 59 656 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: git-send-email generates mail with invalid Message-Id 2009-07-28 9:51 ` Erik Faye-Lund @ 2009-07-28 10:03 ` Thomas Rast 0 siblings, 0 replies; 13+ messages in thread From: Thomas Rast @ 2009-07-28 10:03 UTC (permalink / raw) To: Erik Faye-Lund; +Cc: Frans Pop, git Erik Faye-Lund wrote: > On Tue, Jul 28, 2009 at 11:27 AM, Thomas Rast<trast@student.ethz.ch> wrote: > > git-format-patch generates its own message IDs if it needs them for > > threading, with gen_message_id() (in builtin-log.c). That one appends > > the committer email address blindly, without verifying that it has an > > @ in it. > > That must be a separate issue (but quite possibly a valid one), since > gen_message_id's ids dont' contain "-send-email-" like the message-id > in the report does, no? Ah, true of course. -- Thomas Rast trast@{inf,student}.ethz.ch ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: git-send-email generates mail with invalid Message-Id 2009-07-28 9:27 ` Thomas Rast 2009-07-28 9:51 ` Erik Faye-Lund @ 2009-07-28 10:44 ` Nicolas Sebrecht 2009-07-28 11:13 ` Frans Pop 1 sibling, 1 reply; 13+ messages in thread From: Nicolas Sebrecht @ 2009-07-28 10:44 UTC (permalink / raw) To: Thomas Rast; +Cc: Erik Faye-Lund, Frans Pop, git Erik Faye-Lund wrote: > On Tue, Jul 28, 2009 at 4:46 AM, Frans Pop<elendil@planet.nl> wrote: > > > I assume that this is a configuration issue in the git setup of the > > sender, but shouldn't git-send-email refuse to send out messages with an > > invalid Message-Id? Stricly speacking, it is not an invalid Message-Id. RFC 2822 says that the Message-Id has to be unique. The right hand side may not contain a domain identifier. It is a RECOMMENDED practice (a good one, though). IMHO, inn2 does a wrong assumption. > Not quite. git-send-email generates these message-ids itself (those > who contain "-git-send-email-", that is), and should as such be able > to rely on them being generated correctly. [...] > I'm no perl-expert, but the code looks pretty much correct to me. Looks good here too. That said, if $du_part is still empty after all the stuff over, we could add a fake domain name. This prevent the Message-Id from ending with "-git-send-email->". --- This is untested. git-send-email.perl | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/git-send-email.perl b/git-send-email.perl index d508f83..82fb3b9 100755 --- a/git-send-email.perl +++ b/git-send-email.perl @@ -748,6 +748,9 @@ sub make_message_id use Sys::Hostname qw(); $du_part = 'user@' . Sys::Hostname::hostname(); } + if (not defined $du_part or $du_part eq '') { + $du_part = 'git@fake.dom'; + } my $message_id_template = "<%s-git-send-email-%s>"; $message_id = sprintf($message_id_template, $uniq, $du_part); #print "new message id = $message_id\n"; # Was useful for debugging -- Nicolas Sebrecht ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: git-send-email generates mail with invalid Message-Id 2009-07-28 10:44 ` Nicolas Sebrecht @ 2009-07-28 11:13 ` Frans Pop 2009-07-28 11:38 ` Nicolas Sebrecht 0 siblings, 1 reply; 13+ messages in thread From: Frans Pop @ 2009-07-28 11:13 UTC (permalink / raw) To: Nicolas Sebrecht; +Cc: Thomas Rast, Erik Faye-Lund, git On Tuesday 28 July 2009, you wrote: > Erik Faye-Lund wrote: > > On Tue, Jul 28, 2009 at 4:46 AM, Frans Pop<elendil@planet.nl> wrote: > > > I assume that this is a configuration issue in the git setup of the > > > sender, but shouldn't git-send-email refuse to send out messages > > > with an invalid Message-Id? > > Stricly speacking, it is not an invalid Message-Id. RFC 2822 says that > the Message-Id has to be unique. The right hand side may not contain a > domain identifier. It is a RECOMMENDED practice (a good one, though). It also says that (3.6.4): The message identifier (msg-id) is similar in syntax to an angle-addr construct without the internal CFWS. And defines: message-id = "Message-ID:" msg-id CRLF msg-id = [CFWS] "<" id-left "@" id-right ">" [CFWS] So, the domain part *is* required (or at least: there has to be a "@"; it maybe does not require id-right to be an actual domain, but that's not really relevant here). So, IMO inn2's check is correct. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: git-send-email generates mail with invalid Message-Id 2009-07-28 11:13 ` Frans Pop @ 2009-07-28 11:38 ` Nicolas Sebrecht 2009-07-28 11:47 ` Erik Faye-Lund 0 siblings, 1 reply; 13+ messages in thread From: Nicolas Sebrecht @ 2009-07-28 11:38 UTC (permalink / raw) To: Frans Pop; +Cc: Nicolas Sebrecht, Thomas Rast, Erik Faye-Lund, git The 28/07/09, Frans Pop wrote: > On Tuesday 28 July 2009, you wrote: > > Erik Faye-Lund wrote: > > > > Stricly speacking, it is not an invalid Message-Id. RFC 2822 says that > > the Message-Id has to be unique. The right hand side may not contain a > > domain identifier. It is a RECOMMENDED practice (a good one, though). > > It also says that (3.6.4): > The message identifier (msg-id) is similar in syntax to an angle-addr > construct without the internal CFWS. > > And defines: > message-id = "Message-ID:" msg-id CRLF > msg-id = [CFWS] "<" id-left "@" id-right ">" [CFWS] > > So, the domain part *is* required (or at least: there has to be a "@"; it > maybe does not require id-right to be an actual domain, but that's not > really relevant here). > > So, IMO inn2's check is correct. Hum, you're right. The '@' symbol is required, whatever "id-right" is. My previous patch should fix it. -- Nicolas Sebrecht ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: git-send-email generates mail with invalid Message-Id 2009-07-28 11:38 ` Nicolas Sebrecht @ 2009-07-28 11:47 ` Erik Faye-Lund 2009-07-28 12:10 ` Erik Faye-Lund 0 siblings, 1 reply; 13+ messages in thread From: Erik Faye-Lund @ 2009-07-28 11:47 UTC (permalink / raw) To: Nicolas Sebrecht; +Cc: Frans Pop, Thomas Rast, git On Tue, Jul 28, 2009 at 1:38 PM, Nicolas Sebrecht<nicolas.s.dev@gmx.fr> wrote: > Hum, you're right. The '@' symbol is required, whatever "id-right" is. > My previous patch should fix it. With all due respect, I don't see how that patch fixes anything. The previous last-resort solution should already be just as valid, it assigns 'user@'+hostname to $du_part. Even if hostname is "" it should insert an '@', which didn't happen here. I'm suspecting that git-send-email in v1.5.2.5 didn't do enough checks, and that this is an already-solved issue. Looking at the source code from v1.5.2.5 seems to confirm this. http://repo.or.cz/w/git.git?a=blob;f=git-send-email.perl;h=7c0c90bd21bbb009de81aa315bed1c947a32c423;hb=b13ef4916ac5a25cc5897f85ba0b4c5953cff609 my $message_id_from = extract_valid_address($from); my $message_id_template = "<%s-git-send-email-$message_id_from>"; sub make_message_id { my $date = time; my $pseudo_rand = int (rand(4200)); $message_id = sprintf $message_id_template, "$date$pseudo_rand"; #print "new message id = $message_id\n"; # Was useful for debugging } So I think it's pretty safe to disregard this as an already solved issue. -- Erik "kusma" Faye-Lund kusmabite@gmail.com (+47) 986 59 656 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: git-send-email generates mail with invalid Message-Id 2009-07-28 11:47 ` Erik Faye-Lund @ 2009-07-28 12:10 ` Erik Faye-Lund 2009-07-28 15:07 ` Nicolas Sebrecht 0 siblings, 1 reply; 13+ messages in thread From: Erik Faye-Lund @ 2009-07-28 12:10 UTC (permalink / raw) To: Nicolas Sebrecht; +Cc: Frans Pop, Thomas Rast, git On Tue, Jul 28, 2009 at 1:47 PM, Erik Faye-Lund<kusmabite@googlemail.com> wrote: > On Tue, Jul 28, 2009 at 1:38 PM, Nicolas Sebrecht<nicolas.s.dev@gmx.fr> wrote: >> Hum, you're right. The '@' symbol is required, whatever "id-right" is. >> My previous patch should fix it. > > With all due respect, I don't see how that patch fixes anything. The > previous last-resort solution should already be just as valid, it > assigns 'user@'+hostname to $du_part. Even if hostname is "" it should > insert an '@', which didn't happen here. Here's an attempt to fix the case when Sys::Hostname::hostname returns "" (domains aren't allowed to be empty if I read RFC2822 correctly). The problem with the previous attempt was that the earlier if assigned "user@" to $du_part, so the last if was never entered ($du_part was always defined). I generally don't write Perl, so people will most likely barf all over this one, but at least it should show the concept. It might not even work. I also suspect that it is not needed. http://search.cpan.org/~tty/kurila-1.19_0/ext/Sys-Hostname/Hostname.pm seems to indicate that it either returns something sensible or dies. --- Untested. git-send-email.perl | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) diff --git a/git-send-email.perl b/git-send-email.perl index 303e03a..baadbdb 100755 --- a/git-send-email.perl +++ b/git-send-email.perl @@ -742,7 +742,11 @@ sub make_message_id } if (not defined $du_part or $du_part eq '') { use Sys::Hostname qw(); - $du_part = 'user@' . Sys::Hostname::hostname(); + my $domain = Sys::Hostname::hostname(); + if (not defined $domain or $domain eq '') { + $domain = 'fake.dom'; + } + $du_part = "user@$domain"; } my $message_id_template = "<%s-git-send-email-%s>"; $message_id = sprintf($message_id_template, $uniq, $du_part); -- Erik "kusma" Faye-Lund kusmabite@gmail.com (+47) 986 59 656 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: git-send-email generates mail with invalid Message-Id 2009-07-28 12:10 ` Erik Faye-Lund @ 2009-07-28 15:07 ` Nicolas Sebrecht 0 siblings, 0 replies; 13+ messages in thread From: Nicolas Sebrecht @ 2009-07-28 15:07 UTC (permalink / raw) To: Erik Faye-Lund; +Cc: Nicolas Sebrecht, Frans Pop, Thomas Rast, git The 28/07/09, Erik Faye-Lund wrote: > > Here's an attempt to fix the case when Sys::Hostname::hostname returns > "" (domains aren't allowed to be empty if I read RFC2822 correctly). > > The problem with the previous attempt was that the earlier if assigned > "user@" to $du_part, so the last if was never entered ($du_part was > always defined). Yes, thank you. > I generally don't write Perl, so people will most likely barf all over > this one, but at least it should show the concept. It might not even > work. Looks ok here. > I also suspect that it is not needed. I'm not sure because http://linux.die.net/man/2/gethostname does not tell either (and POSIX neither). That said, I tend to think it worth to merge this fix before having a bug report. -- Nicolas Sebrecht ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: git-send-email generates mail with invalid Message-Id 2009-07-28 9:17 ` Erik Faye-Lund 2009-07-28 9:27 ` Thomas Rast @ 2009-07-28 10:14 ` Frans Pop 2009-07-28 10:26 ` Frans Pop 1 sibling, 1 reply; 13+ messages in thread From: Frans Pop @ 2009-07-28 10:14 UTC (permalink / raw) To: Erik Faye-Lund; +Cc: git On Tuesday 28 July 2009, Erik Faye-Lund wrote: > The problematic e-mails, are they coming from another user than you? > Can you find out who that is, and check what git-version he or she > runs? The Message-Id in my mail was an actual example. Luckily a search for it gave the following link: http://patchwork.kernel.org/patch/37597/ See the link for the name of the user. The headers have: X-Mailer: git-send-email 1.5.2.5 Cheers, FJP ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: git-send-email generates mail with invalid Message-Id 2009-07-28 10:14 ` Frans Pop @ 2009-07-28 10:26 ` Frans Pop 0 siblings, 0 replies; 13+ messages in thread From: Frans Pop @ 2009-07-28 10:26 UTC (permalink / raw) To: Erik Faye-Lund; +Cc: git On Tuesday 28 July 2009, Frans Pop wrote: > On Tuesday 28 July 2009, Erik Faye-Lund wrote: > > The problematic e-mails, are they coming from another user than you? > > Can you find out who that is, and check what git-version he or she > > runs? > > The Message-Id in my mail was an actual example. Luckily a search for > it gave the following link: http://patchwork.kernel.org/patch/37597/ > > See the link for the name of the user. The headers have: > X-Mailer: git-send-email 1.5.2.5 And here are two variants of the full thread containing that patch: http://lkml.org/lkml/2009/7/27/274 http://groups.google.com/group/linux.kernel/browse_thread/thread/49acfc484d261758 In the second the original messages (incl. headers) can be seen, but you have to look for X-Original-... because of Google mail2news conversion. ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2009-07-28 15:11 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2009-07-28 2:46 git-send-email generates mail with invalid Message-Id Frans Pop 2009-07-28 9:17 ` Erik Faye-Lund 2009-07-28 9:27 ` Thomas Rast 2009-07-28 9:51 ` Erik Faye-Lund 2009-07-28 10:03 ` Thomas Rast 2009-07-28 10:44 ` Nicolas Sebrecht 2009-07-28 11:13 ` Frans Pop 2009-07-28 11:38 ` Nicolas Sebrecht 2009-07-28 11:47 ` Erik Faye-Lund 2009-07-28 12:10 ` Erik Faye-Lund 2009-07-28 15:07 ` Nicolas Sebrecht 2009-07-28 10:14 ` Frans Pop 2009-07-28 10:26 ` Frans Pop
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).