[horde] Fwd: Errors after PHP 7.3 upgrade on Debian Stretch

poubeline at free.fr poubeline at free.fr
Mon Sep 23 18:26:10 UTC 2019


> De: "Arjen de Korte" <build+horde at de-korte.org>
> À: horde at lists.horde.org
> Envoyé: Lundi 23 Septembre 2019 19:15:05
> Objet: Re: [horde] Fwd: Errors after PHP 7.3 upgrade on Debian
> Stretch

> Citeren poubeline at free.fr:

> >> Citeren poubeline at free.fr:
> >
> >>
> >>> Citeren poubeline at free.fr:
> >>>
> >>>
> >>>> 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 ? 

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 = postmaster at MY.FQDN 
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 = postmaster at MY.FQDN 
} 
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" 
} 


More information about the horde mailing list