Re: Fwd: Errors after PHP 7.3 upgrade on Debian Stretch
[email protected] Tue, 24 Sep 2019 19:17:27 +0200 (CEST)
| Newsgroups | gmane.comp.horde.user |
|---|---|
| Message-ID | <1467399004.69491730.1569345447018.JavaMail.root@zimbra1-e1.priv.proxad.net> |
De: "Arjen de Korte" < [email protected] > > À: [email protected] > Envoyé: Lundi 23 Septembre 2019 20:43:35 > Objet: Re: [horde] Fwd: Errors after PHP 7.3 upgrade on Debian > Stretch > Citeren [email protected] : > >> De: "Arjen de Korte" < [email protected] > > >> À: [email protected] > >> Envoyé: Lundi 23 Septembre 2019 19:15:05 > >> Objet: Re: [horde] Fwd: Errors after PHP 7.3 upgrade on Debian > >> Stretch > > > >> Citeren [email protected] : > > > >> >> Citeren [email protected] : > >> > > >> >> > >> >>> Citeren [email protected] : > >> >>> > >> >>> > >> >>>> Hi All, > >> >>>> > >> >>>> > >> >>>> I've just upgraded my php version from 7.0 to 7.3 on my > >> >>>> Debian > >> >>>> Stretch server (v9.11) and I get the following errors in the > >> >>>> apache > >> >>>> log : > >> >>>> > >> >>>> > >> >>>> FIRST : > >> >>>> > >> >>>> [php7:warn] [pid 20247] [client my_IP:59368] PHP Warning: > >> >>>> "continue" > >> >>>> targeting switch is equivalent to "break". Did you mean to > >> >>>> use > >> >>>> "continue 2"? in > >> >>>> /usr/share/php/Horde/ActiveSync/Wbxml/Decoder.php > >> >>>> on line 352 > >> >>>> > >> >>>> > >> >>>> I could change the value directly in the decoder.php file to > >> >>>> 'continue 2' to avoid these messages, but is there a clean > >> >>>> solution > >> >>>> to that or I just can ignore it ? > >> >>> > >> >>> Ignore it. > >> >>> > >> >>>> SECOND : > >> >>>> PHP Warning: Declaration of Horde_Form_Type_pgp::init($gpg, > >> >>>> $temp_dir = NULL, $rows = NULL, $cols = NULL) should be > >> >>>> compatible > >> >>>> with Horde_Form_Type_longtext::init($rows = 8, $cols = 80, > >> >>>> $helper = > >> >>>> Array) in /usr/share/php/Horde/Form/Type.php on line 878, > >> >>>> referer: > >> >>>> https://my_webmail_server_adress/imp/dynamic.php?page=mailbox > >> >>> > >> >>> Not an error either ('PHP Warning'). Unless you're a Horde > >> >>> developer, > >> >>> you can safely ignore these messages. > >> >>> > >> >>>> I have several of them when trying to access the filters as I > >> >>>> still > >> >>>> try to recover another issue with the vacation script which > >> >>>> is > >> >>>> not > >> >>>> saved due to a 'connection refused' issue that I already > >> >>>> submitted > >> >>>> but still ongoing. > >> >>>> > >> >>>> > >> >>>> > >> >>>> > >> >>>> My Horde server is version 5.22 and I have applied the latest > >> >>>> patches downloaded from the Pear channel. > >> >>>> > >> >>>> > >> >>>> If someone can help me find a solution for both issues, that > >> >>>> will be > >> >>>> very welcomed. > >> >>>> > >> >>>> Thanks for your help on this. > >> >>>> Cheers > >> >>> > >> >>> > >> >>> Hi Arjen, > >> >>> > >> >>> > >> >>> Thanks for your reply. I was pretty sure that I could get rid > >> >>> of > >> >>> it > >> >>> as it is PHP Warning but I was not sure if I had something > >> >>> wrong > >> >>> with my Horde installation due to these 'errors'. > >> >>> > >> >>> > >> >>> I have another question for you if you have 5 minutes more for > >> >>> me. > >> >>> I have sent on August 20th this question about Ingo : > >> >>> ######### > >> >>> > >> >>> Hi all, > >> >>> > >> >>> > >> >>> I post this question in both mailing lists as I saw some > >> >>> traffic > >> >>> about Ingo in the Horde mailing list also. > >> >>> > >> >>> > >> >>> I am currently fighting to get the Ingo application work > >> >>> correctly > >> >>> for vaccation. > >> >>> I have been able to setup correctly the backends.local.php to > >> >>> use > >> >>> the sieve driver with use of TLS for my server. > >> >>> I can activate and deactivate the vaccation filter, but when I > >> >>> try > >> >>> to save the rule for an out of office message, I get the > >> >>> following > >> >>> error : > >> >>> > >> >>> > >> >>> Script not updated: There was an error activating the script. > >> >>> Connection refused. > >> >>> > >> >>> > >> >>> I have used the 'debug' parameter in the backends.local.php > >> >>> and I > >> >>> do not get any trace of this script error. I had some traces > >> >>> when > >> >>> struggeling with the authentification, but not for the script > >> >>> update. > >> >>> In my backends.local.php, I have set this: > >> >>> $backends['sieve']['transport'][Ingo::RULE_ALL]['params']['scriptname'] > >> >>> = > >> >>> 'ingo'; > >> >>> > >> >>> which is the same as in backends.php > >> >>> > >> >>> > >> >>> Do you have any clue on how to get this script updated or even > >> >>> to > >> >>> get a trace of where this is failing ? > >> >> > >> >> Please post the full contents of backends.local.php *and* make > >> >> sure > >> >> that you have made no modifications to backends.php as well. It > >> >> may > >> >> also help to know which Sieve server you're using. > >> >> > >> >> My first guess would be that your Sieve server is returning an > >> >> error > >> >> because it has no access to the directory where it is > >> >> configured > >> >> to > >> >> write the script. > >> >> > >> >>> Thanks for your help. > >> >>> ######### > >> >>> > >> >>> > >> >>> Do you know where I can get trace about what is happening with > >> >>> the > >> >>> script not update due to a 'connection refused' error. > >> >>> Do you know what kind of trace and in which module I can > >> >>> activate > >> >>> to get a good information about what is going on? > >> >>> > >> >>> > >> >>> Thank you very much for your help anyway. > >> > > >> > Besides setting the "debug" parameter in Ingo's configuration, > >> > you > >> > also need to set the log level to DEBUG in the main Horde > >> > logging > >> > configuration. Then you can see the complete > >> > client-server-communication in Horde's logs. > >> > > >> > -- > >> > Jan Schneider > >> > The Horde Project > >> > https://www.horde.org/ > >> > > >> > > >> > > >> > > >> > > >> > Hi Arjen and Jan, > >> > > >> > > >> > Thank you for your help, really appreciated !! > >> > > >> > > >> > As you asked Arjen, here is the full content of my > >> > backends.local.php file : > >> > > >> > > >> > <?php > >> > > >> > $backends['imap']['disabled'] = true; > >> > $backends['sieve']['disabled'] = false; > >> > $backends['sieve']['preferred'] = ''; > >> > $backends['sieve']['script'][Ingo::RULE_ALL]['driver'] = > >> > 'sieve'; > >> > $backends['sieve']['script'][Ingo::RULE_ALL]['params']['utf8'] = > >> > true; > >> > $backends['sieve']['script'][Ingo::RULE_ALL]['params']['imapflags'] > >> > = true; > >> > $backends['sieve']['script'][Ingo::RULE_ALL]['params']['notify'] > >> > = > >> > true; > >> > $backends['sieve']['transport'][Ingo::RULE_ALL]['driver'] = > >> > 'timsieved'; > >> > $backends['sieve']['transport'][Ingo::RULE_ALL]['params']['hostspec'] > >> > = > >> > 'my.server.FQDN'; > >> > $backends['sieve']['transport'][Ingo::RULE_ALL]['params']['logintype'] > >> > = > >> > 'PLAIN'; > >> > $backends['sieve']['transport'][Ingo::RULE_ALL]['params']['usetls'] > >> > = true; > >> > $backends['sieve']['transport'][Ingo::RULE_ALL]['params']['port'] > >> > = > >> > 4190; > >> > $backends['sieve']['transport'][Ingo::RULE_ALL]['params']['scriptname'] > >> > = > >> > 'ingo'; > >> > $backends['sieve']['transport'][Ingo::RULE_ALL]['params']['debug'] > >> > = false; > >> > > >> > > >> > The Dovecot mail server and the Sieve server are local servers. > >> > I > >> > had to specify the 'hotspec' name to fit the security check of > >> > the > >> > server name (when I was setting 'localhost', I had a connection > >> > issue, which is normal behavior). > > > >> That is a fairly complicated backends.local.php when all you need > >> for > >> a Dovecot server listening on 'localhost' is the following > >> configuration: > > > >> <?php > >> $backends['imap']['disabled'] = true; > >> $backends['sieve']['disabled'] = false; > >> $backends['sieve']['transport'][Ingo::RULE_ALL]['params']['usetls'] > >> = > >> false; > >> $backends['sieve']['script'][Ingo::RULE_ALL]['params']['utf8'] = > >> true; > > > >> Dovecot will allow unencrypted connections through localhost by > >> default, so you only need to tell Horde to not use encryption in > >> this > >> case. And the last line, but this is already explained in the > >> backends.php file. > > > >> I use the above configuration and know it will work with Dovecot. > >> You > >> may want to check your Dovecot configuration, as the 'sieve' > >> extension > >> is no enabled by default as far as I remember. > > > >> > Jan, thanks for the trick on the debug tracing, I understand now > >> > why > >> > setting the 'debug' variable in Ingo was not enough. > >> > I am going to set this up and check what is going on in the > >> > logs. > >> > > >> > > >> > I'll get back to you as soon as possible. > >> > > >> > > >> > Thanks guys, Laurent > > > > Arjen, > > > > I have followed your configuration settings and I still get the > > 'Connection refused' for the script update. > > But it is true that this setting is simplier. I have tried this > > kind > > of configuration before but I thought that it was something missing > > in may backend.local.php file which was causing this behavior. > > > > For the trace I gave just before, it is only issues with the PHP7.3 > > upgrade, but nothing to do with the script update. > > I used the 'DEBUG' option for the logging trace. Should I use > > another kind of tracing like 'WARN' to get the correct logging > > information about the SIEVE rejection ? > I have no idea. I use PHP-7.3.9 here, with Dovecot 2.3.7.2 and > everything works as expected. > Is it only the vacation script that is failing? Can you confirm that > you can define filters for mail? > > Here is my dovecot configuration. As you will see, SIEVE is > > activated : > > # 2.2.27 (c0f36b0): /etc/dovecot/dovecot.conf > > # Pigeonhole version 0.4.16 (fed8554) > > # OS: Linux 4.9.0-11-amd64 x86_64 Debian 9.11 > > dict { > > quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext > > } > > lmtp_save_to_detail_mailbox = yes > > mail_location = maildir:~/maildir:LAYOUT=fs:DIRNAME=__maildir__ > > mail_plugins = " quota virtual" > > mail_privileged_group = vmail > > mailbox_list_index = yes > > managesieve_notify_capability = mailto > > managesieve_sieve_capability = fileinto reject envelope > > encoded-character vacation subaddress comparator-i;ascii-numeric > > relational regex imap4flags copy include variables body enotify > > environment mailbox date index ihave duplicate mime foreverypart > > extracttext spamtest spamtestplus > > namespace inbox { > > inbox = yes > > location = > > mailbox Drafts { > > auto = no > > special_use = \Drafts > > } > > mailbox Junk { > > auto = subscribe > > special_use = \Junk > > } > > mailbox Sent { > > auto = subscribe > > special_use = \Sent > > } > > mailbox Trash { > > auto = no > > special_use = \Trash > > } > > prefix = > > separator = / > > subscriptions = yes > > type = private > > } > > namespace search { > > location = virtual:~/search:LAYOUT=fs:INDEX=MEMORY > > mailbox All { > > auto = subscribe > > special_use = \All > > } > > mailbox New { > > auto = subscribe > > } > > mailbox Star { > > auto = subscribe > > special_use = \Flagged > > } > > prefix = search/ > > separator = / > > type = private > > } > > passdb { > > args = /etc/dovecot/dovecot-sql.conf.ext > > driver = sql > > } > > plugin { > > antispam_backend = pipe > > antispam_mail_notspam = learn_ham > > antispam_mail_sendmail = /usr/bin/rspamc > > antispam_mail_sendmail_args = -h;localhost:11334;-P;q1 > > antispam_mail_spam = learn_spam > > antispam_pipe_program = /usr/bin/rspamc > > antispam_pipe_program_args = > > antispam_pipe_program_notspam_arg = learn_ham > > antispam_pipe_program_spam_arg = learn_spam > > antispam_spam = Junk > > antispam_spam_pattern_ignorecase = junk*;spam* > > antispam_trash = Trash > > antispam_trash_pattern_ignorecase = trash;deleted* > > mailbox_alias_new = Sent Messages > > mailbox_alias_new2 = Sent Items > > mailbox_alias_new3 = Spam > > mailbox_alias_old = Sent > > mailbox_alias_old2 = Sent > > mailbox_alias_old3 = Junk > > quota = dict:User quota::proxy::quota > > quota_rule = Trash:storage=+100M > > quota_status_nouser = DUNNO > > quota_status_overquota = 552 5.2.2 Mailbox is over quota > > quota_status_success = DUNNO > > quota_warning = storage=100%% quota-warning +100 %u > > quota_warning2 = storage=95%% quota-warning +95 %u > > quota_warning3 = storage=80%% quota-warning +80 %u > > quota_warning4 = -storage=100%% quota-warning -100 %u > > recipient_delimiter = _ > > sieve = file:~/sieve;active=~/.dovecot.sieve > > sieve_before = /etc/dovecot/sieve_before/rspamd.sieve > > sieve_extensions = +spamtest +spamtestplus > > sieve_spamtest_max_header = X-Spamd-Result: default: [[:alnum:]]+ > > \[-?[[:digit:]]+\.[[:digit:]]+ / (-?[[:digit:]]+\.[[:digit:]]+)\] > > sieve_spamtest_status_header = X-Spamd-Result: default: > > [[:alnum:]]+ > > \[(-?[[:digit:]]+\.[[:digit:]]+) / -?[[:digit:]]+\.[[:digit:]]+\] > > sieve_spamtest_status_type = score > > } > > postmaster_address = [email protected] > > protocols = " imap lmtp sieve" > > recipient_delimiter = _ > > service auth-worker { > > user = $default_internal_user > > } > > service auth { > > unix_listener /var/spool/postfix/private/auth { > > mode = 0666 > > } > > unix_listener auth-userdb { > > user = vmail > > } > > } > > service dict { > > unix_listener dict { > > group = vmail > > mode = 0660 > > user = vmail > > } > > } > > service imap-postlogin { > > executable = script-login /etc/dovecot/imap-postlogin.bash > > user = vmail > > } > > service imap { > > executable = imap imap-postlogin > > } > > service lmtp { > > unix_listener /var/spool/postfix/private/dovecot-lmtp { > > group = postfix > > mode = 0600 > > user = postfix > > } > > } > > service managesieve-login { > > inet_listener sieve { > > address = 127.0.0.1 > > port = 4190 > > } > > process_min_avail = 1 > > service_count = 1 > > vsz_limit = 64 M > > } > > service managesieve { > > process_limit = 1024 > > } > > service quota-status { > > client_limit = 1 > > executable = quota-status -p postfix > > inet_listener { > > address = localhost > > port = 12349 > > } > > } > > service quota-warning { > > executable = script /usr/local/bin/quota-warning.sh > > unix_listener quota-warning { > > group = vmail > > mode = 0660 > > user = vmail > > } > > user = vmail > > } > > ssl = required > > ssl_cert = </etc/letsencrypt/live/MY.FQDN/cert.pem > > ssl_key = # hidden, use -P to show it > > userdb { > > args = /etc/dovecot/dovecot-sql.conf.ext > > driver = sql > > } > > protocol lmtp { > > mail_plugins = " quota virtual antispam quota sieve virtual > > mailbox_alias" > > postmaster_address = [email protected] > > } > > protocol lda { > > mail_plugins = " quota virtual antispam quota sieve virtual > > mailbox_alias" > > } > > protocol imap { > > mail_plugin_dir = /usr/lib/dovecot/modules > > mail_plugins = " quota virtual antispam quota virtual mailbox_alias > > imap_quota" > > } > -- > Horde mailing list > Frequently Asked Questions: http://horde.org/faq/ > To unsubscribe, mail: [email protected] Hi Arjen and Jan, I cannot configure any filters at all. If I set the default backends.php in Ingo directory without backends.local.php, then I default to IMAP backend with SQL storage for white and black lists which is working. If I set the backends.local.php file to disable IMAP backend and use SIEVE backend, nothing works. The SIEVE connection seems to work because I had a connection failure when I was setting 'localhost' as 'hotspec' variable, and when setting the correct FQDN for the certificate, I did not get errors anymore. But I am not able to save a script. I can enable or disable a filter but I can never save le configuration of the script. I have just tried to find if it was a SIEVE issue but everything seems to work correctly. I have checked the permissions on files and the location of themselves, and all seems OK. I have also created a local '.dovecot.sieve' file in my own mail directory and in a 'sieve' directory with all permissions '777' for the directory and the file, but I still get the issue that I cannot save the script. It tells me that the connection is refused for the driver. Which driver ? When I telnet on port 4190 on my server, I can get the correct connection answer, and the SIEVE server is working as I use it for the anti-spam system. It can read the '/etc/dovecot/sieve_before/rspamd.sieve' file for the 'sieve_before' configuration. Do you know how I can trace the 'Driver' used to connect to the SIEVE server ? And which driver it is ? Thanks -- Horde mailing list Frequently Asked Questions: http://horde.org/faq/ To unsubscribe, mail: [email protected]