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

poubeline at free.fr poubeline at free.fr
Tue Sep 24 17:17:27 UTC 2019


De: "Arjen de Korte" < build+horde at de-korte.org > 

> À: horde at lists.horde.org
> Envoyé: Lundi 23 Septembre 2019 20:43:35
> Objet: Re: [horde] Fwd: Errors after PHP 7.3 upgrade on Debian
> Stretch

> Citeren poubeline at free.fr :

> >> 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 ?

> 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 = 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"
> > }

> --
> Horde mailing list
> Frequently Asked Questions: http://horde.org/faq/
> To unsubscribe, mail: horde-unsubscribe at lists.horde.org

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 


More information about the horde mailing list