|
From: Bu X. <bus...@gm...> - 2013-06-22 18:51:54
|
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 |