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

Arjen de Korte build+horde at de-korte.org
Mon Sep 23 18:43:35 UTC 2019


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





More information about the horde mailing list