diff -urp privatemsg/privatemsg.module privatemsg.new/privatemsg.module
--- privatemsg/privatemsg.module	2010-04-18 11:38:26.000000000 +0200
+++ privatemsg.new/privatemsg.module	2010-04-21 00:39:00.000000000 +0200
@@ -30,6 +30,7 @@ function privatemsg_perm() {
     'administer privatemsg settings',
     'write privatemsg',
     'delete privatemsg',
+    'reply only privatemsg',
   );
 }
 
@@ -1283,7 +1284,7 @@ function privatemsg_reply($thread_id, $b
 
 function _privatemsg_validate_message(&$message, $form = FALSE) {
   $messages = array('error' => array(), 'warning' => array());
-  if (!privatemsg_user_access('write privatemsg', $message['author'])) {
+  if (!privatemsg_user_access('write privatemsg', $message['author']) && (!privatemsg_user_access('reply only privatemsg', $message['author']) && isset($message['thread_id']))) {
     // no need to do further checks in this case...
     if ($form) {
       form_set_error('author', t('User @user is not allowed to write messages', array('@user' => $message['author']->name)));
diff -urp privatemsg/privatemsg.pages.inc privatemsg.new/privatemsg.pages.inc
--- privatemsg/privatemsg.pages.inc	2010-03-17 11:09:46.000000000 +0100
+++ privatemsg.new/privatemsg.pages.inc	2010-04-21 00:40:00.000000000 +0200
@@ -156,7 +156,7 @@ function privatemsg_view($thread) {
   $content['messages']['#weight'] = 0;
 
   // Display the reply form if user is allowed to use it.
-  if (privatemsg_user_access('write privatemsg')) {
+  if (privatemsg_user_access('write privatemsg') || privatemsg_user_access('reply only privatemsg')) {
     $content['reply']['#value'] = drupal_get_form('privatemsg_new', $thread['participants'], $thread['subject'], $thread['thread_id'], $thread['read_all']);
     $content['reply']['#weight'] = 5;
   }
@@ -253,7 +253,7 @@ function privatemsg_new(&$form_state, $r
   }
   $form['privatemsg'] = array(
     '#type'               => 'fieldset',
-    '#access'             => privatemsg_user_access('write privatemsg'),
+    '#access'             => privatemsg_user_access('write privatemsg') || privatemsg_user_access('reply only privatemsg'),
   );
   $form['privatemsg']['author'] = array(
     '#type' => 'value',
