From mboxrd@z Thu Jan 1 00:00:00 1970 From: daniel@electricrain.com (Dan Sully) Date: Tue, 24 Jul 2007 11:13:58 -0700 Subject: [sup-talk] sup-sync & missing message-ids In-Reply-To: <1185299593-sup-1596@south> References: <20070723174809.GA6866@electricrain.com> <1185299593-sup-1596@south> Message-ID: <20070724181358.GA20393@electricrain.com> * William Morgan shaped the electrons to say... >> For whatever reason, there are messages in my Maildir that don't have >> message-ids in their headers. sup-sync bitches about that rather >> loudly.. would it be better to artificially construct a message-id? > >If this really is a prevalent thing, then yes, I'm happy to fake a >message-id. Yeah - I see it a lot. Also seeing mail with missing Date: headers. Most (but not all) is sent from automated systems, ie: order confirmation, etc. I've attached a patch which is working for me with message-id.. a bit of a hack. >This has nothing to do with RubyMail; Sup simply doesn't play well with >other clients. Part of the tradeoff I made with Sup was to assume by >default that the source never changes except through Sup. If that >assumption fails, Sup should detect it and ask you to run sup-sync >--changed, which should bring everything back in sync. Yeah.. just a little inconvient if I'm checking mail via my iPhone then have to sup-sync before reading when I'm back in front of a terminal. Any issues with running sup-sync via cron ? -D -- please describe web 2.0 to me in 2 sentences or less. you make all the content. they keep all the revenue. -------------- next part -------------- --- message.rb.orig 2007-07-23 11:16:12.000000000 -0700 +++ message.rb 2007-07-23 11:42:15.000000000 -0700 @@ -107,7 +107,8 @@ def read_header header header.each { |k, v| header[k.downcase] = v } - %w(message-id date).each do |f| + #%w(message-id date).each do |f| + %w(date).each do |f| raise MessageFormatError, "no #{f} field in header #{header.inspect} (source #@source offset #@source_info)" unless header.include? f raise MessageFormatError, "nil #{f} field in header #{header.inspect} (source #@source offset #@source_info)" unless header[f] end @@ -124,7 +125,7 @@ @to = PersonManager.people_for header["to"] @cc = PersonManager.people_for header["cc"] @bcc = PersonManager.people_for header["bcc"] - @id = header["message-id"] + @id = header["message-id"] || header["from"].match(/\b(\S+?@\S+)\b/).captures.to_s + "." + @date.to_i.to_s @refs = (header["references"] || "").gsub(/[<>]/, "").split(/\s+/).flatten @replytos = (header["in-reply-to"] || "").scan(/<(.*?)>/).flatten @replyto = PersonManager.person_for header["reply-to"]