Re: server side filter plugin problem

Bu Xiaobing <[email protected]> Sun, 23 Jun 2013 02:52:06 +0800
Newsgroups gmane.mail.squirrelmail.plugins
Message-ID <[email protected]>
On 2013-6-19 13:35, Paul Lesniewski wrote:
> Sorry for the delay.
>
>>>>>> version list:
>>>>>> squirrelmail-webmail-1.4.22
>>>>>> server_settings_backend-2.0-1.4.0.tar.gz
>>>>>> server_side_filters-2.0beta1-1.4.0.tar.gz
>>>>>> compatibility-2.0.16-1.0.tar.gz
>>>>>>
>>>>>> And I have enabled the server_side_filters throw config/conf.pl script.
>>>>> You need to show configuration files/snippets.
>>>>>
>>>>>> Plugins
>>>>>>      Installed Plugins
>>>>>>        1. server_side_filters
>>>>>>
>>>>>>      Available Plugins:
>>>>>>        2. administrator
>>>>>>
>>>>>>
>>>>>> When I use "Options" -> "Message Filters" in my web browser, after add some filter rules, and click the SAVE button, it says "Error: Error deleting file or directory"
>>>>>>
>>>>>> And in my /var/log/httpd/ssl_error_log:
>>>>>>
>>>>>> PHP Warning:  unlink(/): \xca\xc7\xd2\xbb\xb8\xf6\xc4\xbf\xc2\xbc in /var/www/html/webmail/functions/global.php on line 278, referer: https://mymailserver.com/webmail/plugins/server_side_filters/options.php
>>>>> This is a warning, not an error.  You should provide the complete log
>>>>> information for whatever has happened.  You may need to look in a
>>>>> different log file or increase your PHP log settings.  You also might
>>>>> try using only ASCII characters in your filters to start with.
>>>>>
>>>>>> Here is the global.php function:
>>>>>>
>>>>>>       275 function sq_call_function_suppress_errors($function, $args=array()) {
>>>>>>        276    $display_errors = ini_get('display_errors');
>>>>>>        277    ini_set('display_errors', '0');
>>>>>>        278    $ret = call_user_func_array($function, $args);
>>>>>>        279    ini_set('display_errors', $display_errors);
>>>>>>        280    return $ret;
>>>>>>        281 }
>>>>>> Anyone can give me some advice?
>>>> I have enabled another plugin: server_side_filters_procmail, and below lists all the parameters I changed:
>>>>
>>>> server_side_filters_procmail/config.php
>>>> $use_maildirs = 0;
>>
>> And for test purpose, I have changed the config as blow:
>> $filter_rules_storage_info = array(
>>      'BACKEND'               => 'local_file',
>>      'ACCESS_TYPE'           => array('VALUE' => 'PHP'),
>>      'FILE' => array('VALUE_REPLACE' => '/tmp/.mailfilter'),
>>      'PARSE_PATTERN'         => array('VALUE' => "/^(.*)$/s"),
>>      'PATTERN_GROUP_NUMBER'  => array('VALUE' => 1),
>>      'NEW_SETTING_TEMPLATE'  => array('VALUE' => '%n'),
>
> Sorry, this %n also should be changed to %1.
>
>>      'DELETE_WHEN_EMPTY'     => array('VALUE' => 1),
>>      'TREAT_AS_EMPTY_WHEN_NOT_FOUND' => array('VALUE' => 1),
>> );
>>
>> Of course php owner have write privilege to the /tmp directory.
>>
>> But seems the same problem.
>>
>> Notice: Uninitialized string offset: -1 in /var/www/html/webmail/plugins/server_side_filters_procmail/functions.php on line 255 Warning: strpos(): Empty delimiter in /var/www/html/webmail/plugins/server_side_filters_procmail/functions.php on line 257 SERVER SETTINGS BACKEND MATCHES (PATTERN = "/^(.*)$/s") ARE:
>
> Again, this is not the cause of your problem, but you can remove this
> error by adding this BEFORE line 254 in
> server_side_filters_procmail/functions.php:
>
> if (!empty($default_folder_prefix)) {
>
> and then you have to add a closing brace after the following two if
> statements - line 260 should do it.
>
>> ERROR:
>> Could not write to file "/"
>
> Sorry again, the problem is another oversight of version differences
> in the configuration file.
>
>>      'FILE' => array('VALUE_REPLACE' => '/tmp/.mailfilter'),
>
> For you needs to be "VALUE" (without the "_REPLACE" part).  Remember
> to also use %1 instead of %n in NEW_SETTING_TEMPLATE and %1 and %2
> instead of %u and %d respectively in FILE as well.  A new version of
> the backend plugin will be out in the medium term where you will need
> to revert these changes back to what you originally found in the
> filters plugin examples.
>

Thanks for your relies, I configured the config.php as follows,
$filter_rules_storage_info = array(
    'BACKEND'               => 'local_file',
    'ACCESS_TYPE'           => array('VALUE' => 'PHP'),
    'FILE' => array('VALUE' => '/tmp/.mailfilter'),
    'PARSE_PATTERN'         => array('VALUE' => "/^(.*)$/s"),
    'PATTERN_GROUP_NUMBER'  => array('VALUE' => 1),
    'NEW_SETTING_TEMPLATE'  => array('VALUE' => '%1'),
    'DELETE_WHEN_EMPTY'     => array('VALUE' => 1),
    'TREAT_AS_EMPTY_WHEN_NOT_FOUND' => array('VALUE' => 1),
);

And then the filter rules add by the webmail GUI will be saved as the assigned file.

[root@mailtest server_side_filters]# cat /tmp/.mailfilter
########## BEGIN SQUIRRELMAIL SERVER SIDE FILTER RULES  ##########
########## DO NOT EDIT ANYTHING IN THIS SECTION BY HAND ##########
#
####RULE#### From-''-test-''-Trash-''-MOVE-''-ON-''-OFF-''--''-CONTAINS-''-
:0H:
* ^From: .*test
$DEFAULT/Trash


#
########## END SQUIRRELMAIL SERVER SIDE FILTER RULES    ##########
########## DO NOT EDIT ANYTHING IN THIS SECTION BY HAND ##########

For security reason, I choose to save the .mailfiter into each users' home directory as /home/%1/.mailfilter, but the apache running user don't or shouldn't have the privileges to do that work.

And I found SUID can do this, I configured the SUID method as follows:

  $filter_rules_storage_info = array(
     'BACKEND'               => 'local_file',
     'ACCESS_TYPE'           => array('VALUE' => 'SUID'),
     'SUID_LOCATION'         => array('VALUE' => '/var/www/html/webmail/plugins/server_settings_backend/suid_backend/squirrelmail_server_settings_suid_backend'),
     'FILE'                  => array('VALUE_REPLACE' => '/home/%1/.mailfiter'),
     'PARSE_PATTERN'         => array('VALUE' => "/^(.*)$/s"),
     'PATTERN_GROUP_NUMBER'  => array('VALUE' => 1),
     'NEW_SETTING_TEMPLATE'  => array('VALUE' => '%1'),
     'DELETE_WHEN_EMPTY'     => array('VALUE' => 1),
     'TREAT_AS_EMPTY_WHEN_NOT_FOUND' => array('VALUE' => 1),
  );

I create some filter rules, after a click SAVE button, some error appeared, "There was a problem creating this filter Unable to save filter rules"

And in the /var/log/httpd/error_log I can find the following errors "setgroups(0, NULL): Operation not permitted"

Any one can give me some advices to save this problem?

Thanks,
Bu Xiaobing






------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
-----
squirrelmail-plugins mailing list
Posting guidelines: http://squirrelmail.org/postingguidelines
List address: [email protected]
List archives: http://news.gmane.org/gmane.mail.squirrelmail.plugins
List info (subscribe/unsubscribe/change options): https://lists.sourceforge.net/lists/listinfo/squirrelmail-plugins