--- messaging_phpmailer/messaging_phpmailer.module	Mon Jan 19 16:26:36 1970
+++ messaging_phpmailer/messaging_phpmailer.module	Mon Jan 19 16:26:36 1970
@@ -159,13 +167,22 @@
   }
   $mail->From = !empty($from['email']) ? $from['email'] : $message['headers']['From'];
   $mail->FromName = !empty($from['name']) ? $from['name'] : '';
   $mail->AddAddress($message['to']);
+
+  if(!empty($message['headers']['Sender'])) {
+    $mail->Sender = $message['headers']['Sender'];
+  }
+  if(!empty($message['headers']['Errors-To'])) {
+    $mail->AddCustomHeader('Errors-To:'.$message['headers']['Errors-To']);
+  }
 
   if(!empty($message['headers']['Message-ID'])) {
     $mail->MessageID = $message['headers']['Message-ID'];
   }
   // Strip HTML out of $body for plaintext equivalent of HTML email.
   $mail->AltBody = drupal_html_to_text($body);
--- messaging.admin.inc	Mon Jan 19 16:26:36 1970
+++ messaging.admin.inc	Mon Jan 19 16:26:36 1970
@@ -250,6 +250,24 @@
     '#options' => $methods,
     '#default_value' => variable_get('messaging_default_method', ''),
   );
+  $form['general']['messaging_returnpath_mail'] = array(
+    '#title' => t('Format for return-path and errors-to email address'),
+    '#type' => 'textfield',
+    '#size' => 10,
+    '#default_value' => variable_get('messaging_returnpath_mail', '[site-mail]'),
+  );
   // Logging settings  
   $period = array(0 => t('Disabled')) + drupal_map_assoc(array(3600, 10800, 21600, 32400, 43200, 86400, 172800, 259200, 604800, 1209600, 2419200, 4838400, 9676800), 'format_interval');
   $form['general']['messaging_log'] = array(
@@ -289,6 +307,19 @@
     '#default_value' => $limit['percent'],
     '#description' => t('Maximum percentage of cron time the process may use.'),
   );
+  if (module_exists('token')) {
+    $form['view']['token_help'] = array(
+      '#title' => t('Replacement patterns'),
+      '#type' => 'fieldset',
+      '#collapsible' => TRUE,
+      '#collapsed' => TRUE,
+//      '#description' => t('Prefer raw-text replacements for text to avoid problems with HTML entities!'),
+      );
+
+    $form['view']['token_help']['help'] = array(
+      '#value' => theme('token_help', 'user'),
+      );
+  }
   return system_settings_form($form);
 }
 
--- messaging.mail.inc	Mon Jan 19 16:26:36 1970
+++ messaging.mail.inc	Mon Jan 19 16:26:36 1970
@@ -38,11 +39,14 @@
     $from = $params['from'];
   }
 
+  $params['returnpath'] = token_replace(variable_get('messaging_returnpath_mail', '[site-mail]'), 'user', $message->sender_account);
+
   // Build the mail object, mimic drupal_mail() format
   $mail = array(
     'id'       => 'messaging_'. (!empty($message->type) ? 'message-'.$message->type : 'message'),
     'to'       => $destination,
     'from'     => $from,
     'language' => !empty($message->language) ? $message->language : language_default(),
     'params'   => $params,
     'subject'  => $message->subject,
@@ -83,11 +87,11 @@
     'Reply-To' => $from,
   );
   
-  if ($default_from) {
+  if ($params['returnpath']) {
     // To prevent e-mail from looking like spam, the addresses in the Sender and
     // Return-Path headers should have a domain authorized to use the originating
     // SMTP server. Errors-To is redundant, but shouldn't hurt.
-    $more_headers['Sender'] = $more_headers['Return-Path'] = $more_headers['Errors-To'] = $default_from;
+    $more_headers['Sender'] = $more_headers['Return-Path'] = $more_headers['Errors-To'] = $params['returnpath'];
     $headers += $more_headers;
   }  
 
