Re: server side filter plugin problem

Bu Xiaobing <[email protected]> Mon, 24 Jun 2013 10:59:53 +0800
Newsgroups gmane.mail.squirrelmail.plugins
Message-ID <[email protected]>
On 2013-6-24 1:40, Paul Lesniewski wrote:
> On Sat, Jun 22, 2013 at 11:52 AM, Bu Xiaobing <[email protected]> wrote:
>> 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'),
>
> VALUE instead of VALUE_REPLACE
>
>>       '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
>
>
>

I think the problem with setgroups(0, NULL): Operation not permitted has been resolved.

At the first time I set
'SUID_LOCATION'  => array('VALUE' => '/var/www/html/webmail/plugins/server_settings_backend/suid_backend/squirrelmail_server_settings_suid_backend'),

I find in the /var/www/html/webmail/plugins/server_settings_backend also has a squirrelmail_server_settings_suid_backend, and the file permission is -rwsr-xr-x.

So I change the SUID_LOCATION value to /var/www/html/webmail/plugins/server_settings_backend/squirrelmail_server_settings_suid_backend

But get another error "Remote file name cannot contain "/"" in the /var/log/httpd/error_log.

And if I set "$ssf_debug_server_settings_backend = 1" in the server_side_filters/config.php, and after I click "Options->Message Filters" on the web browser, the web page only display the following message:

Unable to retrieve file from command "/var/www/html/webmail/plugins/server_settings_backend/squirrelmail_server_settings_suid_backend 'localhost' 'buxiaobing' 'get_file' '/home/buxiaobing/.mailfiter' '/var/local/squirrelmail/attach/xo4HqZ6WpSq6iUazfx1TLAmw3SEg6p9D'"

Can't understand why will it retrieve the /var/local/squirrelmail/attach/xo4HqZ6WpSq6iUazfx1TLAmw3SEg6p9D file and this file is not exist.


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