7 years agoalso re-run crypto-selector after editing field rerun_crypto_selector
Hamish Downer [Fri, 11 Feb 2011 00:27:22 +0000 (00:27 +0000)]
also re-run crypto-selector after editing field

7 years agoRe-run the crypto selector hook after message changes.
Hamish Downer [Wed, 9 Feb 2011 18:58:30 +0000 (18:58 +0000)]
Re-run the crypto selector hook after message changes.

The crypto-selector hook will be re-run after the message is edited,
or after the recipients change due to changing the "Reply to"
selector in reply-mode. So when the recipients change, the default
selector will also change.

However, if the user has manually changed the crypto selector then the
hook will not be re-run, so as to avoid over-riding the user's choice.

7 years agoadded @changed_by_user to HorizontalSelector
Hamish Downer [Tue, 8 Feb 2011 23:53:13 +0000 (23:53 +0000)]
added @changed_by_user to HorizontalSelector

7 years agoupdate changelog etc for 0.12.1 order_labels maildir_speed
Rich Lane [Mon, 24 Jan 2011 05:05:39 +0000 (21:05 -0800)]
update changelog etc for 0.12.1

7 years agoship sup-import-dump
Rich Lane [Mon, 24 Jan 2011 04:57:09 +0000 (20:57 -0800)]
ship sup-import-dump

7 years agofix executable bits
Rich Lane [Thu, 20 Jan 2011 04:04:52 +0000 (20:04 -0800)]
fix executable bits

7 years agoadd sup-import-dump: import message state in sup-dump format
Sascha Silbe [Wed, 19 Jan 2011 13:52:15 +0000 (14:52 +0100)]
add sup-import-dump: import message state in sup-dump format

sup-import-dump imports message state as exported by sup-dump into the index.
It is a direct replacement for the sup-sync --restored functionality that got
lost when merging the maildir branch.
Unlike sup-sync it operates on the index only, so it's fast enough for
periodically importing full dumps to keep multiple sup installations
It should also be easy enough to add support for a "diff" style format that
would allow replaying "logs" if sup were enhanced to write those in the

To give some rough numbers:

Dump file contains 78104 lines, index about 600k entries. 410 entries from the
dump file don't match the index and cause index updates. Transaction mode is
used for all runs.
Cold cache, dry run: 138s real time, 53s user+system
Hot cache, dry run: 42s real time, 40s user+system
Hot cache, changes written to disk: 55s real time, 44s user+system
Hot cache, no updates: 43s real time, 41s user+system

Signed-off-by: Sascha Silbe <>
7 years agofix gpgme check
William Morgan [Wed, 19 Jan 2011 23:47:28 +0000 (15:47 -0800)]
fix gpgme check

It works as is in 1.9, but in 1.8 it was throwing an exception for even
referencing GPGME::Error if gpgme wasn't installed.

7 years agobugfix in backup yaml saving
William Morgan [Wed, 19 Jan 2011 17:13:32 +0000 (09:13 -0800)]
bugfix in backup yaml saving

7 years agoprefer gpg2 (GnuPG 2.x) over gpg (GnuPG 1.x)
Sascha Silbe [Tue, 18 Jan 2011 18:20:21 +0000 (19:20 +0100)]
prefer gpg2 (GnuPG 2.x) over gpg (GnuPG 1.x)

Since 1.9.14 GnuPG can automatically start gpg-agent if it's not already
running (using a well-known socket location). When using GnuPG 1.x gpg-agent
needs to already be running at the time sup is started because the socket
location is random and passed via environment variables.

Autostarting gpg-agent is particularly convenient when using sup via ssh
as gpg-agent would need to be started manually (for local X sessions OTOH
it's often started automatically by distro scripts).

Signed-off-by: Sascha Silbe <>
7 years agogen_sign_user_opts: fall back to default account if no account matches sender
Sascha Silbe [Tue, 18 Jan 2011 18:31:21 +0000 (19:31 +0100)]
gen_sign_user_opts: fall back to default account if no account matches sender

Fixes the following exception:

NoMethodError from thread: main
undefined method `gpgkey' for nil:NilClass
./lib/sup/crypto.rb:226:in `gen_sign_user_opts'
./lib/sup/crypto.rb:48:in `sign'
./lib/sup/util.rb:609:in `send'
./lib/sup/util.rb:609:in `method_missing'
./lib/sup/modes/edit-message-mode.rb:411:in `send'
./lib/sup/modes/edit-message-mode.rb:411:in `build_message'
./lib/sup/modes/edit-message-mode.rb:354:in `send_message'
./lib/sup/mode.rb:59:in `send'
./lib/sup/mode.rb:59:in `handle_input'
./lib/sup/buffer.rb:277:in `handle_input'

Signed-off-by: Sascha Silbe <>
7 years agoensure sources.yaml gets flushed to disk
Sascha Silbe [Tue, 18 Jan 2011 18:28:43 +0000 (19:28 +0100)]
ensure sources.yaml gets flushed to disk

Before renaming sources.yaml we need to fsync() it, otherwise we could end up
with an empty file in case of a crash [1].


Signed-off-by: Sascha Silbe <>
7 years agosources.yaml: consistent label ordering
Sascha Silbe [Tue, 18 Jan 2011 18:26:54 +0000 (19:26 +0100)]
sources.yaml: consistent label ordering

Sort labels in sources.yaml so the ordering doesn't change betweeen saves.
This is useful when tracking sources.yaml with a VCS (e.g. git).

Signed-off-by: Sascha Silbe <>
7 years agosup-sync: only show message id of deleted messages in verbose mode
Sascha Silbe [Tue, 18 Jan 2011 18:25:28 +0000 (19:25 +0100)]
sup-sync: only show message id of deleted messages in verbose mode

We show message ids for added messages in verbose mode only, so we should do
the same for deleted messages.

Signed-off-by: Sascha Silbe <>
7 years agopre-expand source URIs
Sascha Silbe [Tue, 18 Jan 2011 18:26:17 +0000 (19:26 +0100)]
pre-expand source URIs

Expand the URI for each source resp. each CLI argument only once. This brings
down the time taken by sup-sync for parsing source arguments from 45s to
less than 2 seconds for a list of 13 sources on my XO-1.5.

Signed-off-by: Sascha Silbe <>
7 years agobuffer: throw "friendly" exception if question is too long
Sascha Silbe [Tue, 18 Jan 2011 18:26:37 +0000 (19:26 +0100)]
buffer: throw "friendly" exception if question is too long

If a question is too long to fit on screen, the buffer manager currently
throws a hard-to-understand exception deep down in the buffer logic.
Explicitly checking for this condition and throwing a descriptive exception
makes life easier for hook authors.

Signed-off-by: Sascha Silbe <>
7 years agosup-sync: show progress for message deletion
Sascha Silbe [Tue, 18 Jan 2011 18:24:42 +0000 (19:24 +0100)]
sup-sync: show progress for message deletion

When moving lots of messages across folders, deleting can take a lot of time
so we should display progress information for deletion.

Signed-off-by: Sascha Silbe <>
7 years agopoll: fix message update vs. already-imported detection
Sascha Silbe [Tue, 18 Jan 2011 18:24:27 +0000 (19:24 +0100)]
poll: fix message update vs. already-imported detection

poll_from prepends existing locations to the "new" message, so we can't use
just the first location.

While using the last location would work, calculating the difference should be
fast and is more robust in the face of future changes to poll_from.

Signed-off-by: Sascha Silbe <>
7 years agodon't leak fds for mbox sources
Sascha Silbe [Tue, 18 Jan 2011 17:59:33 +0000 (18:59 +0100)]
don't leak fds for mbox sources

Only open the mbox when it's actually used and close it again once we're
finished iterating over it.

Adds a method go_idle to Source to inform the source we're unlikely to
use it in the near future so it can do internal clean-up as appropriate.

Signed-off-by: Sascha Silbe <>
7 years agofix EOL spaces
Sascha Silbe [Tue, 18 Jan 2011 17:58:00 +0000 (18:58 +0100)]
fix EOL spaces

Trailing spaces can make dealing with patches a pain for some developers.

Signed-off-by: Sascha Silbe <>
7 years agoImprove Singleton performance
Tero Tilus [Fri, 31 Dec 2010 01:42:49 +0000 (03:42 +0200)]
Improve Singleton performance

7 years agoMerge branch 'scrolling'
Rich Lane [Wed, 19 Jan 2011 03:04:27 +0000 (19:04 -0800)]
Merge branch 'scrolling'

7 years agoMerge branch 'gpgme'
Rich Lane [Wed, 19 Jan 2011 03:04:22 +0000 (19:04 -0800)]
Merge branch 'gpgme'

7 years agoMerge branch 'blank-lines-perf'
Rich Lane [Wed, 19 Jan 2011 03:04:17 +0000 (19:04 -0800)]
Merge branch 'blank-lines-perf'

7 years agorequire xapian 1.2.1
Rich Lane [Tue, 18 Jan 2011 04:43:51 +0000 (20:43 -0800)]
require xapian 1.2.1

7 years agoMerge branch 'and-labels'
Rich Lane [Mon, 17 Jan 2011 05:57:10 +0000 (21:57 -0800)]
Merge branch 'and-labels'

7 years agoship new executables
Rich Lane [Sat, 15 Jan 2011 05:28:35 +0000 (21:28 -0800)]
ship new executables

7 years agodepend on ncursesw and not net-ssh
Rich Lane [Sat, 15 Jan 2011 05:28:07 +0000 (21:28 -0800)]
depend on ncursesw and not net-ssh

7 years agoshow progress in sup-sync
Rich Lane [Sat, 15 Jan 2011 03:22:53 +0000 (19:22 -0800)]
show progress in sup-sync

7 years agoupdate changelog/etc for 0.12
Rich Lane [Fri, 14 Jan 2011 05:52:27 +0000 (21:52 -0800)]
update changelog/etc for 0.12

7 years agoPerformance and configurability of horizontal scrolling
Tero Tilus [Thu, 30 Dec 2010 22:48:03 +0000 (00:48 +0200)]
Performance and configurability of horizontal scrolling

7 years agouse local time in thread-index-mode date widget
Rich Lane [Thu, 13 Jan 2011 08:44:39 +0000 (00:44 -0800)]
use local time in thread-index-mode date widget

7 years agoadded color for untrusted cryptonotice
Hamish Downer [Mon, 6 Dec 2010 22:33:17 +0000 (22:33 +0000)]
added color for untrusted cryptonotice

7 years agoadded signature output hook
Hamish Downer [Tue, 16 Nov 2010 22:54:06 +0000 (22:54 +0000)]
added signature output hook

7 years agoimproved signature messages
Hamish Downer [Tue, 16 Nov 2010 20:58:01 +0000 (20:58 +0000)]
improved signature messages

7 years agocatch exception when no public key present
Hamish Downer [Mon, 8 Nov 2010 22:31:01 +0000 (22:31 +0000)]
catch exception when no public key present

7 years agoConverted crypto to use the gpgme gem
Hamish Downer [Fri, 5 Nov 2010 22:30:55 +0000 (22:30 +0000)]
Converted crypto to use the gpgme gem

7 years agoMessage#text_to_chunks: avoid O(n^2) behavior on sequences of blank lines blank-lines-perf
Tero Tilus [Thu, 28 Oct 2010 11:01:12 +0000 (14:01 +0300)]
Message#text_to_chunks: avoid O(n^2) behavior on sequences of blank lines

Signed-off-by: Tero Tilus <>
7 years agoMake encoding conversion pass //IGNORE to iconv
Alvaro Herrera [Tue, 9 Nov 2010 15:13:47 +0000 (12:13 -0300)]
Make encoding conversion pass //IGNORE to iconv

This makes transcoding failure a bit more user-friendly by discarding
broken chars and displaying what can be successfully transcoded, instead
of punting and displaying the ASCII representation.

This is particularly useful when corporate email systems append a
disclaimer that's encoded in a different encoding than whatever the user
has set up in the MUA; or when broken remote MUAs fail to re-encode the
quoted part when they reply in a different encoding.

7 years agoUse "-- " for signature separator
Alvaro Herrera [Tue, 9 Nov 2010 15:10:30 +0000 (12:10 -0300)]
Use "-- " for signature separator

7 years agoFix crash on handling attachment filenames with /
Alvaro Herrera [Tue, 9 Nov 2010 15:07:27 +0000 (12:07 -0300)]
Fix crash on handling attachment filenames with /

7 years agoForce UTF-8 in ask_many_emails..
Gaute Hope [Tue, 9 Nov 2010 10:06:04 +0000 (11:06 +0100)]
Force UTF-8 in ask_many_emails..

A mix-up occurs when you first tab complete a UTF-8 contact, then try to
complete an ASCII encoded contact.

They are all stored as UTF-8 in file and when loaded - but will
apparently be converted to ASCII if possible when a Person object is

7 years agoFix Whitespace errors in buffer.rb
Gaute Hope [Tue, 9 Nov 2010 10:05:10 +0000 (11:05 +0100)]
Fix Whitespace errors in buffer.rb

7 years agoensure index directory is created
Rich Lane [Tue, 9 Nov 2010 21:50:19 +0000 (13:50 -0800)]
ensure index directory is created

7 years agoMore UTF-8 support; load all labels as UTF-8
Gaute Hope [Thu, 4 Nov 2010 13:21:20 +0000 (14:21 +0100)]
More UTF-8 support; load all labels as UTF-8

Even if the labels.txt file is read as UTF-8 apparantly after a label is
symoblized, it will be US-ASCII on .to_s if possible. This patch forces

If you use L to select a US-ASCII label (i.e. Sent) then want to narrow
the search by pressing L again and use tab to match against an UTF-8
label sup crashes.

Also fixes one whitespace error in bin/sup

7 years agoStop double quoting the protocol when sending encrypted emails
Hamish Downer [Fri, 22 Oct 2010 15:18:10 +0000 (16:18 +0100)]
Stop double quoting the protocol when sending encrypted emails

It was the case that when encrypting emails, the content-type
header line would look like:
Content-Type: multipart/encrypted; boundary="=-1287680456-54319-281-6673-1-="; protocol=""application/pgp-encrypted""
It appears that rmail adds the extra quotes, so this change
makes the protocol unquoted to start with, so we end up with
correct quoting.

7 years agoBugfix: mime_encode: Encode _ as =5F instead of =96
Michael Stapelberg [Mon, 25 Oct 2010 22:09:02 +0000 (00:09 +0200)]
Bugfix: mime_encode: Encode _ as =5F instead of =96

This line of code was introduced in 0d45aa38, probably by mistake. The ASCII
code in decimal for '_' (underscore) is 95 (the code says 96, but probably
another mistake), but as mime encoding is hexadecimal, we need =5F instead.

An example of this encoding problem can be seen in one of my earlier patches
with message-id <>.

8 years agoStop worrying notice when no signature present
Hamish Downer [Sun, 17 Oct 2010 22:25:20 +0000 (23:25 +0100)]
Stop worrying notice when no signature present

When no signature is present, there was a message saying
"Unable to determine validity of cryptographic signature".
This fix means that if there are no error messages and no
messages about signature verification then the message is
assumed to not be signed at all. This fix also saves the
encrypted messages to a temp file with a suffix of .asc
to stop gpg complaining about "unknown suffix".

8 years agoGive gpg a known suffix
Hamish Downer [Mon, 18 Oct 2010 18:35:41 +0000 (19:35 +0100)]
Give gpg a known suffix

Give gpg a file to decrypt ending in ".asc" to stop gpg complaining
about "unknown suffix".

8 years agoDeal with "\r\n" inside encrypted messages
Hamish Downer [Sun, 17 Oct 2010 18:48:36 +0000 (19:48 +0100)]
Deal with "\r\n" inside encrypted messages

RMail expects "\n\n" to be the dividing line between the header and
body, but sometimes the decrypted message has "\r\n" as line ending
so the RMail parsing does not work. This commit fixes that.

8 years agoBugfix: Don’t call handle_added_message for old messages with a new location
Michael Stapelberg [Wed, 20 Oct 2010 08:57:02 +0000 (10:57 +0200)]
Bugfix: Don’t call handle_added_message for old messages with a new location

When sup finds a message, it always called handle_added_message which in turn
invokes add_or_unhide. This is bad, because for killed messages (or marked as
spam), this would bring the message up in the inbox again. After this commit,
handle_added_message is only called when the message is either new or an
existing location of it was updated (to update the labels).

The normal usecase for receiving a message with the same ID is being subscribed
to a mailing list via two different mail addresses.

8 years agoFix monkey-patching of Tempfile
Michael Hamann [Fri, 8 Oct 2010 14:03:36 +0000 (10:03 -0400)]
Fix monkey-patching of Tempfile

In Ruby 1.9.2 the interal function make_tmpname has changed it's
parameters and the second parameter can be nil now. This breaks the
monkey-patched Tempfile class in sup. Additionally, monkey-patching is
not really necessary as the Tempfile class supports an array as basename
instead of a string containing prefix and a suffix since Ruby version
1.8.7. The only place I've found where the suffix might matter is
directly in message-chunks.rb where I've changed the basename to an
array. Additionally the new make_tmpname function from Ruby 1.9.2 is
monkey-patched for Ruby versions lower than 1.8.7 now.

NOTE: As I don't have a working Ruby 1.8 setup for sup I haven't tested
this with older versions, but the code works here when the version check
is changed to 1.9.3 and I can't see anything that shouldn't work with
Ruby 1.8.6 and below.

8 years agoMonkey patch RMails MIME-Version header handling
Gaudenz Steinlin [Tue, 12 Oct 2010 21:25:28 +0000 (23:25 +0200)]
Monkey patch RMails MIME-Version header handling

RMail automagically adds MIME-Version headers to messages on
serialization. Sup uses RMail::Message object to represent parts of
multipart messages. Adding headers to these parts breaks gpg signatures.
The MIME-Version header is only needed in the outermost message. There
it's added manually.

8 years agoEncode multipart messages for crypt operations
Gaudenz Steinlin [Tue, 12 Oct 2010 21:20:53 +0000 (23:20 +0200)]
Encode multipart messages for crypt operations

Sup crashed when trying to encode a multipart message for crypto
operations. This encodes each part of the message separately. It also
changes the encoding for text/* parts to quoted-printable.

This only concerns the transfer encoding and does not change the charset
in any way.

8 years agoBugfix: Correctly split list of mail addresses
Gregor Hoffleit [Tue, 12 Oct 2010 16:04:37 +0000 (18:04 +0200)]
Bugfix: Correctly split list of mail addresses

split_on_commas() fails to work correctly for wrapped header lines:

Cc: John Doe <>, Foo Bar

Sup parsed this (in lib/sup/person.rb, Person.from_address_list) as:

Cc: John Doe <>, <>

I fixed this by normalizing the whitespace before working the
regex in split_on_commas.

8 years agoBugfix: Set background color for starred column
Gregor Hoffleit [Thu, 27 May 2010 09:40:13 +0000 (11:40 +0200)]
Bugfix: Set background color for starred column

For the sake of consistency, Sup should always use the starred_color for the
'starred' column in the thread-index-mode, whether there's a star or a blank.

Rationale: With this patch, I'm able to set the background color of the
thread-index to bg:7 without having to change my term's background color.
Without the patch, the background color shines through in the starred column.

8 years agoAdded a gpgkey option to the account settings
Hamish Downer [Sun, 10 Oct 2010 16:18:41 +0000 (17:18 +0100)]
Added a gpgkey option to the account settings

This allows the user to specify the gpg key used. In addition, if
gpgkey is not set, and there is only one email address defined, then
sup will not pass any id to gpg, so gpg will use its default key.
Only if gpgkey is not set and there are multiple email addresses
will sup use the old behaviour of defining the key to use by
passing gpg the from email address.

8 years agoBugfix: fix regexp for detecting filename in Content-Disposition header
Michael Stapelberg [Sun, 10 Oct 2010 20:30:46 +0000 (22:30 +0200)]
Bugfix: fix regexp for detecting filename in Content-Disposition header

In a message written in some Microsoft mail program (the only header is
"X-MimeOLE: Produced By Microsoft Exchange V6.5"), the filename part of
the Content-Disposition header spans multiple lines (due to the filename
being very long and encoded in base64 due to the use of UTF-8):

Content-Disposition: attachment;

The previous regexp did not properly match the whole string, but only the
first line. This is fixed by adding the 'm' option (to match newlines as
characters) and using \z instead of $ ("end of string" instead of "end of

The same fix is also applied to the Content-Type header one line below.

8 years agos/@filename/@path/ in MBox#store_message
Adam Lloyd [Sat, 9 Oct 2010 22:11:21 +0000 (18:11 -0400)]
s/@filename/@path/ in MBox#store_message

 lib/sup/mbox.rb |  4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

@filename is undefined in MBox, so trying to store a message to an mbox
source results in a crash.  @path contains the needed information.

This fixes issues 79 and 89, related to crashes on sending mail.

8 years agoRevert "fix GPG "hang" on malformed PGP message (detached signature)"
Rich Lane [Fri, 8 Oct 2010 19:46:28 +0000 (15:46 -0400)]
Revert "fix GPG "hang" on malformed PGP message (detached signature)"

This reverts commit 6c65c12a6c9b740fe6b79534e2731e5e92a4c27f.

8 years agofix keybindings hash
Rich Lane [Fri, 8 Oct 2010 19:45:10 +0000 (15:45 -0400)]
fix keybindings hash

8 years agoMerge commit 'mainline/master'
Rich Lane [Fri, 8 Oct 2010 19:44:28 +0000 (15:44 -0400)]
Merge commit 'mainline/master'

8 years agofix handling of multiple label: terms in search and-labels
Sascha Silbe [Wed, 29 Sep 2010 14:16:02 +0000 (10:16 -0400)]
fix handling of multiple label: terms in search

By default Xapian will join query terms with the same prefix with OR instead
of AND, so searching for multiple labels doesn't return the expected results.
By making use of a parameter to add_boolean_prefix (added in Xapian 1.2) we
can tell Xapian to use OR only for the search terms that are guaranteed to be

Signed-off-by: Sascha Silbe <>
8 years agoadd sendmail hook staging
Sascha Silbe [Wed, 29 Sep 2010 14:13:00 +0000 (10:13 -0400)]
add sendmail hook

Add a hook that is run in place of the sendmail command. This allows
last-minute adjustments including sending a separate copy to each recipient
and setting the envelope sender, i.e. VERP (variable envelope return path).

Signed-off-by: Sascha Silbe <>
8 years agoprefer To and Cc adresses of accounts on reply
Gaudenz Steinlin [Thu, 7 Oct 2010 09:05:30 +0000 (05:05 -0400)]
prefer To and Cc adresses of accounts on reply

Resending this on Rich's request.

If a message was sent (To or Cc header) to an address which corresponds
to an account prefer this account over the account corresponding to the
address in recipient_email.

This solves the problem that the wrong reply from address is chosen on
mails which are sent to an account which is forwarded to another account.

8 years agofix searching for non-lowercase labels
Sascha Silbe [Wed, 29 Sep 2010 14:16:15 +0000 (10:16 -0400)]
fix searching for non-lowercase labels

Case is preserved when marshalling labels (stored as document data), but label
terms are stored lowercase. build_xapian_query uses mkterm and thus already
converts labels to lowercase when searching. parse_query accepts a Xapian
query string from the user and needs to explicitly convert labels to
lowercase, which it now does.

Signed-off-by: Sascha Silbe <>
8 years agofix GPG "hang" on malformed PGP message (detached signature)
Sascha Silbe [Tue, 5 Oct 2010 11:25:33 +0000 (07:25 -0400)]
fix GPG "hang" on malformed PGP message (detached signature)

A PGP message chunk (bounded by "-----BEGIN PGP MESSAGE-----" and
"-----END PGP MESSAGE-----") can contain a detached signature. By default GPG
will wait for the payload to be supplied on stdin if it gets passed a lone
detached signature. To the user it will appear as GPG (or sup, since they
don't see any output from GPG) hanging.

The best way to solve this would be enabling batch mode, but then passphrase
querying without gpg-agent wouldn't work anymore. So we resort to passing
--multifile which has the side effect of not allowing detached signatures.

Encountered and tested with message
<> [1] on the git
mailing list.


Signed-off-by: Sascha Silbe <>
8 years agoFixed inline gpg crash when the end marker is missing
Michael Hamann [Sat, 4 Sep 2010 21:51:46 +0000 (17:51 -0400)]
Fixed inline gpg crash when the end marker is missing

lines.between() does not check if the end marker actually exists, but
later it is assumed the marker exists. This change introduces a check
for the end marker and doesn't decrypt messages in which the end marker
is missing. This is a fix for

8 years agoExplicitly specify signature hashing algorithm
Gaudenz Steinlin [Thu, 7 Oct 2010 17:50:13 +0000 (13:50 -0400)]
Explicitly specify signature hashing algorithm

Sup used to add a micalg=pgp-sha1 parameter in Content-Type header of a
signed message, but used whatever the user had configured as his
preferred hasing algorithm in gpg.conf. This lead to unverifiable
signatures in some MUAs.

This adds an explicit --digest-algo option to the gpg call to override
any user configured setting. It also upgrades the algorithm to sha256 as
sha1 is being phased out now.

8 years agoUpdate status on jump on line in line-cursor-mode
Gaute Hope [Thu, 23 Sep 2010 10:29:59 +0000 (12:29 +0200)]
Update status on jump on line in line-cursor-mode

The line number isn't updated in the status field when you jump to the
end or beginning, or do page up or down before the next redraw is done.

Updating the status manually in set_cursor_pos.

8 years agoForce UTF-8 on label and contact completion
Gaute Hope [Thu, 9 Sep 2010 11:48:49 +0000 (13:48 +0200)]
Force UTF-8 on label and contact completion

Fix issue 36, by forcing UTF-8 encoding on string that will be matched.

Only if the force_encoding method is available to maintain 1.8

There is likely to still be a few other places where the equivilent of
this bug still exists.

Also force encoding on label search completion

UTF-8 label completion: Convert existing labels

8 years agoBugfix: Don’t display thread participants twice
Michael Stapelberg [Thu, 7 Oct 2010 15:24:38 +0000 (17:24 +0200)]
Bugfix: Don’t display thread participants twice

When a participant of a thread uses different email addresses, but the same
name, he would be displayed twice in the list:
 • foo <>
 • foo <>
 • bar <>
would lead to: "foo, bar, foo"

8 years agoprotect sup-dump against bad index entries
Rich Lane [Fri, 16 Jul 2010 17:59:44 +0000 (13:59 -0400)]
protect sup-dump against bad index entries

8 years agoMerge remote branch 'origin/maildir'
Rich Lane [Fri, 16 Jul 2010 02:22:17 +0000 (19:22 -0700)]
Merge remote branch 'origin/maildir'


8 years agofix crash in sup-sync if the default sent source is used
Sascha Silbe [Thu, 8 Jul 2010 12:28:31 +0000 (12:28 +0000)]
fix crash in sup-sync if the default sent source is used

This fixes a crash in sup-sync when syncing a folder that contains a copy of a
"sent" message and no "sent" folder has been explicitly configured in the
config file (so it hasn't been added to sources.yaml).

Signed-off-by: Sascha Silbe <>
8 years agombox: fix date format
Sascha Silbe [Thu, 8 Jul 2010 12:28:07 +0000 (12:28 +0000)]
mbox: fix date format

The date format used in all (known/common) variations is that of Unix/POSIX
asctime(), not the RFC 822 / RFC 2822 Date: header format.

Using an incorrect date format causes at least mutt, mb2md and Python
UnixMailbox (but not PortableUnixMailbox) to either reject the mailbox or show
it as empty.


Signed-off-by: Sascha Silbe <>
8 years agoConditionally add Symbol#to_proc
Ben Walton [Thu, 10 Jun 2010 02:27:44 +0000 (22:27 -0400)]
Conditionally add Symbol#to_proc

Add a utility monkey-patch for versions of ruby that don't have the
to_proc method for Symbols.

Signed-off-by: Ben Walton <>
8 years agoparse_header: don't use empty or invalid Message-ID header
Sascha Silbe [Thu, 1 Jul 2010 13:48:13 +0000 (13:48 +0000)]
parse_header: don't use empty or invalid Message-ID header

If Message-ID contains only invalid characters (or none at all),
sanitize_message_id will return an empty string. As Message.parse_header
only checked for header existance, not validity, sup-dump could produce
a dump file that sup-sync would choke on.

We now fall back to a fake id for both missing and invalid Message-ID

8 years agofix crash in sup-dump if the default sent source is used
Sascha Silbe [Tue, 29 Jun 2010 08:12:05 +0000 (10:12 +0200)]
fix crash in sup-dump if the default sent source is used

This fixes a crash in sup-dump if the index contains a "sent" message and
no "sent" folder has been explicitly configured in the config file
(so it hasn't been added to sources.yaml).

Signed-off-by: Sascha Silbe <>
8 years agoDon’t display "..." after snippets which are displayed completely
Michael Stapelberg [Wed, 16 Jun 2010 18:08:30 +0000 (20:08 +0200)]
Don’t display "..." after snippets which are displayed completely

Short mails (for example: "Yes, the date works for me.") often can
be displayed completely in the snippet. However, before this patch,
sup abbreviated the snippet even though it was not abbreviated.

8 years agoinline-gpg: call text_to_chunks on the text before/after the GPG part
Michael Stapelberg [Tue, 22 Jun 2010 15:30:37 +0000 (17:30 +0200)]
inline-gpg: call text_to_chunks on the text before/after the GPG part

This is necessary for stupid mailers which produce TOFU mails
containing unquoted inline gpg mails *argh*.

8 years agoDon't choke when scanning message with unknown encoding
Sascha Silbe [Tue, 29 Jun 2010 08:04:54 +0000 (10:04 +0200)]
Don't choke when scanning message with unknown encoding

This fixes the following error:

./lib/sup/message.rb:473:in `message_to_chunks': "7BIT" (RMail::EncodingUnsupportedError)

when running sup-sync on a folder that contains a mail with these headers:

Content-Transfer-Encoding: 7bit
X-Mime-Autoconverted: from 8bit to 7bit by courier 0.60

Signed-off-by: Sascha Silbe <>
8 years agofix reference to EncodingUnsupportedError
Sascha Silbe [Tue, 29 Jun 2010 07:50:25 +0000 (09:50 +0200)]
fix reference to EncodingUnsupportedError

This fixes the following error:

./lib/sup/message.rb:473:in `message_to_chunks': uninitialized constant Redwood::Message::EncodingUnsupportedError (NameError)

Signed-off-by: Sascha Silbe <>
8 years agomore workarounds for empty thread bug
Rich Lane [Thu, 10 Jun 2010 02:09:25 +0000 (19:09 -0700)]
more workarounds for empty thread bug

8 years agoworkaround nil Thread#first bug
Rich Lane [Thu, 10 Jun 2010 01:39:06 +0000 (18:39 -0700)]
workaround nil Thread#first bug

8 years agoMerge branch 'sup-server-work'
Rich Lane [Thu, 10 Jun 2010 01:13:23 +0000 (18:13 -0700)]
Merge branch 'sup-server-work'

8 years agofix some indentation sup-server-work
Rich Lane [Tue, 8 Jun 2010 02:33:30 +0000 (19:33 -0700)]
fix some indentation

8 years agodeinstantiate all managers on finish
Rich Lane [Mon, 7 Jun 2010 16:06:41 +0000 (09:06 -0700)]
deinstantiate all managers on finish

8 years agoDecode messages according to their Content-Transfer-Encoding
Michael Stapelberg [Fri, 4 Jun 2010 22:13:54 +0000 (00:13 +0200)]
Decode messages according to their Content-Transfer-Encoding

This is necessary for MIME-messages (for example as part of multipart/signed)
which are encoded in base64.

8 years agomove HookManager singleton instantiation to Redwood.start
Rich Lane [Mon, 7 Jun 2010 15:11:42 +0000 (08:11 -0700)]
move HookManager singleton instantiation to Redwood.start

8 years agomove base_dir knowledge out of load_config
Rich Lane [Mon, 7 Jun 2010 05:13:33 +0000 (22:13 -0700)]
move base_dir knowledge out of load_config

8 years agoadd file log sink in Redwood.start
Rich Lane [Mon, 7 Jun 2010 05:01:07 +0000 (22:01 -0700)]
add file log sink in Redwood.start

8 years agoload config in Redwood.start
Rich Lane [Mon, 7 Jun 2010 04:49:05 +0000 (21:49 -0700)]
load config in Redwood.start

8 years agomake PollManager delay an instance variable
Rich Lane [Mon, 7 Jun 2010 04:38:55 +0000 (21:38 -0700)]
make PollManager delay an instance variable

8 years agocleanup EM.spawn_reactor_thread
Rich Lane [Mon, 7 Jun 2010 02:10:37 +0000 (19:10 -0700)]
cleanup EM.spawn_reactor_thread

8 years agoadd test_query and check tag
Rich Lane [Sun, 6 Jun 2010 16:03:04 +0000 (09:03 -0700)]
add test_query and check tag

8 years agoinstantiate enough singletons for a null query
Rich Lane [Sun, 6 Jun 2010 16:02:24 +0000 (09:02 -0700)]
instantiate enough singletons for a null query

8 years agosingleton bugfix
Rich Lane [Sun, 6 Jun 2010 16:01:02 +0000 (09:01 -0700)]
singleton bugfix

8 years agoprotocol debugging code
Rich Lane [Sun, 6 Jun 2010 15:51:02 +0000 (08:51 -0700)]
protocol debugging code

8 years agopass index object to server
Rich Lane [Sun, 6 Jun 2010 04:17:21 +0000 (21:17 -0700)]
pass index object to server