balsa MDN reply patches (long, sorry...)

Hi all,

during the last days I had time to almost finish my patches to enable
the Message Disposition Notification (MDN) reply feature in balsa I
announced ~3 months ago. There are still a few smaller problems
remaining (see below), but I attach a first version of the patches
(against 1.1.2) and a description of what I did to this mail. As it
changes the configure script (see below), be sure to run
aclocal -I macros/ && autoheader && automake && autoconf before make.

*** Please send me your comments! ***

Thanks for your help,



How MDN Requests are handled

I tried to follow rfc-2298 as much as possible. When a message is
displayed for the first time (unread flag set), I check if there is a
disposition-notification-to header line. In this case I check if the
header looks "clean" (the user is in the To or Cc list, and the
disposition-notification-to address is equal to the return-path, the
sender or the from address. Otherwise the header is considered to be
suspicious. The user can define the MDN reply action for these two
cases separately as "Never" (the request is ignored), "Ask me" (a
dialog is popped up to ask the user if the reply shall be sent or
not), and "Always" (the reply is sent without confirmation). The
defaults are "Ask me" for clean and "Never" for suspicious
requests. The reply message consists of two parts, an informational
text, and a message/disposition-notification part according to part 3
of rfc-2298.

This whole stuff can be disabled using a configure option, e.g. if
replying to MDN requests breaks the security policy of your site.

Changes for the MDN reply stuff

* added a new config option `--enable-mdn-reply' which def's or
  undef's BALSA_MDN_REPLY. Most other changes are protected by
  #ifdef/#endif, so the normal code should still work. This makes it
  possible to disable all changes, e.g. if they violate the security
  Files affected: acconfig.h,

* changed libmutt/parse.c to enable detection of the
  disposition-notification-to header line (not protected by

* changed libbalsa/mailbox.c to copy a disposition-notification-to
  header line into the message structure (not protected by

* changed libbalsa/body.[hc] to enable setting a mime type of a
  buffer's body explicitly (protected)

* changed libbalsa/send.c to set a mutt_body's mime type to different
  values than text/plain (protected)

* changed src/balsa-app.h to add a new "tristate" data type and two
  fields in the balsa_app structure to define the reaction when a MDN
  request is received (protected)

* changed src/pref-manager.c to add widgets for changing these two
  values (protected)

* changed src/save-restore.c to save and restore these two values

* added a lot of changes to src/balsa-message.c which handle incoming
  MDN requests, create a reply and send it (protected)

Remaining Problems/Questions

* If I understand rfc-2298 correctly, the reply's Content-Type should
  be multipart/report, but balsa (or libmutt?) always generates
  multipart/mixed. No idea how I could fix this without too many
  changes, and I also have no idea how I could add the option
  "report-type=disposition-notification" to this line. I guess it will
  not break the functionality, though.

* I would like to set the charset in the reply correctly, but
  different from the normal send operation I have no idea what the
  user selected the last time (and this might be incorrect). As a
  simple solution I could use gnome_i18n_get_language() to find the
  correct charset in the locales array of src/sendmsg-window.c (and
  use find_locale_index_by_locale), but then there would be bigger
  changes. Currently I use ISO-8859-1, but do you have an idea to
  improve this? 

* Translations of the new messages/texts. I could produce them for
  german, shall I send them to the list?

    Albrecht Dreß  -  Monschauer Straße 22  -  D-53121 Bonn (Germany)
      Phone (+49) 228 6199571  -  E-Mail


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]