This patch is tailored to horde3.0.4-4sarge3 (debian stable).
It's an updated version of riseup's patch:
http://dev.riseup.net/privacy/webmail/#imp_privacy_patch
nadir-technik(a)nadir.org, 20060418

--- lib/Horde/Auth.php.orig	2006-04-18 12:52:56.000000000 +0200
+++ lib/Horde/Auth.php	2006-04-18 12:54:37.000000000 +0200
@@ -679,10 +679,10 @@
         $GLOBALS['registry']->loadPrefs();
 
         /* Fetch the user's last login time. */
-        $old_login = @unserialize($GLOBALS['prefs']->getValue('last_login'));
+        /* $old_login = @unserialize($GLOBALS['prefs']->getValue('last_login')); */ 
 
         /* Display it, if we have a notification object and the
-         * show_last_login preference is active. */
+         * show_last_login preference is active. 
         if (isset($GLOBALS['notification']) && $GLOBALS['prefs']->getValue('show_last_login')) {
             if (empty($old_login['time'])) {
                 $GLOBALS['notification']->push(_("Last login: Never"), 'horde.message');
@@ -693,12 +693,12 @@
                     $GLOBALS['notification']->push(sprintf(_("Last login: %s from %s"), strftime('%c', $old_login['time']), $old_login['host']), 'horde.message');
                 }
             }
-        }
+        } */
 
         // Set the user's last_login information.
-        $last_login = array('time' => time(),
+        /* $last_login = array('time' => time(),
                             'host' => @gethostbyaddr($_SERVER['REMOTE_ADDR']));
-        $GLOBALS['prefs']->setValue('last_login', serialize($last_login));
+        $GLOBALS['prefs']->setValue('last_login', serialize($last_login)); */
     }
 
     /**
--- lib/Horde/MIME/Headers.php.orig	2006-04-18 12:56:37.000000000 +0200
+++ lib/Horde/MIME/Headers.php	2006-04-18 12:58:26.000000000 +0200
@@ -296,14 +296,13 @@
                 $remote = $_SERVER['REMOTE_HOST'];
             }
         }
-        $received = 'from ' . $remote . ' (';
+        $received = 'from localhost (localhost [127.0.0.1]) ';
 
-        if (!empty($_SERVER['REMOTE_IDENT'])) {
+        /* if (!empty($_SERVER['REMOTE_IDENT'])) {
             $received .= $_SERVER['REMOTE_IDENT'] . '@' . $remote . ' ';
         } elseif ($remote != $_SERVER['REMOTE_ADDR']) {
             $received .= $remote . ' ';
-        }
-        $received .= '[' . $remote_addr . ']) ';
+        } */
 
         if (!empty($GLOBALS['conf']['server']['name'])) {
             $server_name = $GLOBALS['conf']['server']['name'];
--- services/problem.php.orig	2006-04-18 13:00:08.000000000 +0200
+++ services/problem.php	2006-04-18 13:01:19.000000000 +0200
@@ -74,9 +74,9 @@
         $message = str_replace("\r\n", "\n", $message);
 
         // This is not a gettext string on purpose.
-        $remote = (!empty($_SERVER['REMOTE_HOST'])) ? $_SERVER['REMOTE_HOST'] : $_SERVER['REMOTE_ADDR'];
+        // $remote = (!empty($_SERVER['REMOTE_HOST'])) ? $_SERVER['REMOTE_HOST'] : $_SERVER['REMOTE_ADDR'];
         $user_agent = $_SERVER['HTTP_USER_AGENT'];
-        $message = "This problem report was received from $remote. " .
+        $message = "This problem report was received from an IMP user (IP anonymized). " .
             "The user clicked the problem report link from the following location:\n" .
             Util::getFormData('return_url', 'No requesting page') .
             "\nand is using the following browser:\n$user_agent\n\n$message";
