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