View Issue Details

IDProjectCategoryView StatusLast Update
0005651SOGoSOPEpublic2022-11-30 14:18
Reporterafro Assigned Tosebastien  
PriorityurgentSeveritycrashReproducibilityalways
Status resolvedResolutionfixed 
Platform[Server] LinuxOSRHEL/CentOSOS Version7
Fixed in Version5.8.0 
Summary0005651: SOGo don't start after yum update
Description

After update of SOGo with yum, it don't start. On logs there is no mucho info. I have tried on 3 servers, the same happens. These are the only messages:

systemctl status -l sogod

● sogod.service - SOGo is a groupware server
Loaded: loaded (/usr/lib/systemd/system/sogod.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Wed 2022-11-30 05:08:39 -03; 8s ago
Process: 1874 ExecStart=/usr/sbin/sogod -WOWorkersCount ${PREFORK} -WOPidFile /var/run/sogo/sogo.pid -WOLogFile /var/log/sogo/sogo.log (code=exited, status=1/FAILURE)
Main PID: 8109 (code=killed, signal=KILL)
systemd[1]: Starting SOGo is a groupware server...
sogod[1874]: /usr/sbin/sogod: Uncaught exception NSInvalidArgumentException, reason: Can not determine type information for -[GSDictionary setObject:forKey:]
systemd[1]: sogod.service: control process exited, code=exited status=1
systemd[1]: Failed to start SOGo is a groupware server.
systemd[1]: Unit sogod.service entered failed state.
systemd[1]: sogod.service failed.

Steps To Reproduce

Update SOGo with yum

TagsNo tags attached.

Activities

sebastien

sebastien

2022-11-30 09:49

administrator   ~0016430

Last edited: 2022-11-30 09:52

Hi,

Could you please provide :

  • Your SOGo version
  • Your sogo.conf file with password / ip obfuscated

Sebastien

afro

afro

2022-11-30 10:06

reporter   ~0016431

Before I used version 5.7.1 and it worked perfectly. Yum updated to 5.8.0 and it doesn't work anymore.

This is the sogo.conf file:

{
//
// - Official SOGo document: http://sogo.nu/support/index.html#/documentation
// - Mailing list: http://sogo.nu/support/index.html#/community
//

// Daemon address and port
WOPort = 127.0.0.1:20000;

// PID file
//WOPidFile = /var/run/sogo/sogo.pid;

// Log file
//WOLogFile = /var/log/sogo/sogo.log;

// Enable verbose logging. Reference:
// http://www.sogo.nu/nc/support/faq/article/how-to-enable-more-verbose-logging-in-sogo.html
//SOGoDebugRequests = YES;
//SOGoEASDebugEnabled = YES;
//ImapDebugEnabled = YES;
//LDAPDebugEnabled = YES;
//MySQL4DebugEnabled = YES;
//PGDebugEnabled = YES;

// Define the URL to online help for SOGo. When set, an additional icon
// will appear near the logout button in SOGo's web interface. The URL
// will always be open in a blank target.
SOGoHelpURL = "https://ayuda.example.com";

// set the maximum allowed size for content being sent to SOGo, this can
// also limit the file attachment size being uploaded to SOGo when
// composing a mail.
// The value is in kilobyte. Default is 0 or disabled (unlimit).
WOMaxUploadSize = 40960;

// Parameter used to set the maximum allowed email message size when
// composing a mail.
// The value is in kilobytes. By default, the value is 0, or disabled so
// no limit will be set.
SOGoMaximumMessageSizeLimit = 40960;

// Performance Tuning
//
// The amount of instances of SOGo that will be spawned to handle multiple
// requests simultaneously. When started from the init script, that amount
// is overriden by the `PREFORK=` setting in /etc/sysconfig/sogo or
// /etc/default/sogo. A value of 3 is a reasonable default for low usage.
// The maximum value depends on the CPU and IO power provided by your
// machine: a value set too high will actually decrease performances under
// high load.
//
// You should have at least one child per EAS device configured to use
// "push". You must also have more children than you have EAS devices
// configured to use "push" - in order to handle normal SOGo requests to
// its Web or DAV interfaces.
//
// Defaults to 1 when unset, increase it if you see below error message in
// sogo log file: 'No child available to handle incoming request'
//
// WARNING:
//      - on RHEL/CentOS, this setting is controlled by parameter
//        'PREFORK=' defined in /etc/sysconfig/sogo.
//      - on Debian/Ubuntu, this setting is controlled by parameter
//        'PREFORK=' defined in /etc/default/sogo.
WOWorkersCount = 120;

// Parameter used to set the maximum amount of time, in seconds, SOGo will
// wait before replying to a Ping command.
// If not set, it defaults to 10 seconds.
SOGoMaximumPingInterval = 3540;

// Parameter used to set the maximum amount of time, in seconds, SOGo will
// wait before replying to a Sync command.
// If not set, it defaults to 30 seconds.
SOGoMaximumSyncInterval = 3540;

// Parameter used to set the maximum amount of time, in seconds, SOGo will
// wait before doing an internal check for data changes (add, delete, and
// update). This parameter must be lower than SOGoMaximumSyncInterval and
// SOGoMaximumPingInterval.
// If not set, it defaults to 10 seconds.
SOGoInternalSyncInterval = 30;

// Specifies the number of minutes after which a busy child process will be
// killed by the parent process.
// Defaults to 10 (minutes).
WOWatchDogRequestTimeout = 61;

// Overwrite the maximum number of items returned during a Sync operation.
// Defaults to 0, which means no overwrite is performed.
// Setting this parameter to a value greater than 512 will have unexpected
// behaviour with various ActiveSync clients.
//SOGoMaximumSyncWindowSize = 100;

// Overwrite the maximum response size during a Sync operation.
// The value is in kilobytes. Setting this to 512 means the response size
// will be of 524288 bytes or less (or a bit greater if needed for syncing
// one item). Note that if you set the value too low and a mail message
// (or any other object like calendar events, tasks and contacts) surpasses
// it, it will still be synced but only this item will be.
// Defaults to 0, which means no overwrite is performed.
//
// Say you have these five mails and you set the limit to 512KB:
//  1.  250 KB
//  2.  250 KB
//  3.   25 KB
//  4.  750 KB
//  5.   10 KB
// Sync iteration no. 1 will pick message 1, 2 and 3.
// Sync iteration no. 2 will pick message 4.
// Sync iteration no. 3 will pick message 5.
SOGoMaximumSyncResponseSize = 2048;

// The maximum amount of memory (in megabytes) that a child can use.
// Reaching that value will force children processes to restart, in order
// to preserve system memory.
//
// Error message when it reaches the value:
// "terminating app, vMem size limit (xxx MB) has been reached (currently xxx MB)"
//
// Defaults to 384.
SxVMemLimit = 512;

// Enable XSRF (also known as CSRF) protection.
SOGoXSRFValidationEnabled = YES;

// IMAP connection pool.
// Your performance will slightly increase, as you won't open a new
// connection for every access to your IMAP server.
// But you will get a lot of simultaneous open connections to your IMAP
// server, so make sure he can handle them.
// For debugging it is reasonable to turn pooling off.
//NGImap4DisableIMAP4Pooling = NO;

SOGoProfileURL = "mysql://sogo:DELETED@127.0.0.1:3306/sogo/sogo_user_profile";
OCSFolderInfoURL = "mysql://sogo:DELETED@127.0.0.1:3306/sogo/sogo_folder_info";
OCSSessionsFolderURL = "mysql://sogo:DELETED@127.0.0.1:3306/sogo/sogo_sessions_folder";
OCSEMailAlarmsFolderURL = "mysql://sogo:DELETED@127.0.0.1:3306/sogo/sogo_alarms_folder";

// With 3 parameters below, SOGo requires only 9 SQL tables in total
// instead of creating 4 SQL tables for each user.
OCSCacheFolderURL = "mysql://sogo:DELETED@127.0.0.1:3306/sogo/sogo_cache_folder";
OCSStoreURL = "mysql://sogo:DELETED@127.0.0.1:3306/sogo/sogo_store";
OCSAclURL = "mysql://sogo:DELETED@127.0.0.1:3306/sogo/sogo_acl";

// Default language in the web interface
SOGoLanguage = SpanishSpain;

// Specify which module to show after login: Calendar, Mail, Contacts.
SOGoLoginModule = Mail;

// Must login with full email address
SOGoForceExternalLoginWithEmail = YES;

// Allow user to change full name and email address.
SOGoMailCustomFromEnabled = NO;

// IMAP server
// Local connection is considered as secure by Dovecot, so 'imap://' is fine.
// With remote IMAP server, use 'imaps://127.0.0.1:143/?tls=YES' instead;
//SOGoIMAPServer = "imap://127.0.0.1:143/";
SOGoIMAPServer = "imap://127.0.0.1:143/?tls=YES&tlsVerifyMode=allowInsecureLocalhost";

// Allow user to add other IMAP accounts that will be visible from the SOGo
// Webmail interface.
// Default is NO.
//SOGoMailAuxiliaryUserAccountsEnabled = YES;

// SMTP server
SOGoSMTPServer = "smtp://127.0.0.1:587/?tls=YES&tlsVerifyMode=allowInsecureLocalhost";
SOGoMailingMechanism = smtp;
SOGoSMTPAuthenticationType = PLAIN;

// Enable managesieve service
//
// WARNING: Sieve scripts generated by SOGo is not compatible with Roundcube
//          webmail, don't use sieve service in both webmails, otherwise
//          it will be messy.
//
//SOGoSieveServer = "sieve://127.0.0.1:4190/?tls=YES&tlsVerifyMode=allowInsecureLocalhost";
//SOGoSieveServer = sieve://127.0.0.1:4190;
//SOGoSieveScriptsEnabled = YES;
//SOGoVacationEnabled = YES;
//SOGoForwardEnabled = YES;
SOGoSieveFolderEncoding = UTF-8;

// Memcached
SOGoMemcachedHost = 127.0.0.1;

// Parameter used to set which usernames require administrative privileges
// over all the users tables. For example, this could be used to post
// events in the users calendar without requiring the user to configure
// his/her ACLs. In this case you will need to specify those superuser's
// usernames like this :
// SOGoSuperUsernames = (<username1>[,<username2>, ...]);
//SOGoSuperUsernames = ();

SOGoTimeZone = "America/Santiago";

SOGoFirstDayOfWeek = 1;

SOGoRefreshViewCheck = every_2_minutes;
SOGoMailReplyPlacement = above;

// Disable gravatar
SOGoExternalAvatarsEnabled = NO;
SOGoGravatarEnabled = NO;

//
// Notifications
//
// Enable email-based alarms on events and tasks.
SOGoEnableEMailAlarms = NO;

// Notify meeting participants
SOGoAppointmentSendEMailNotifications = NO;

// Notify if a calendar or an address book has been created.
SOGoFoldersSendEMailNotifications = NO;

// Notify involved users of a calendar or address book's ACLs.
SOGoACLsSendEMailNotifications = NO;

// Notify when a modification is being done to his/her own calendar by someone else.
SOGoNotifyOnExternalModifications = NO;

// NOTE: PostgreSQL cannot update view in iRedMail
SOGoPasswordChangeEnabled = NO;

SOGoDayStartTime = 8;

SOGoDayEndTime = 20;

SOGoMailComposeMessageType = html;

SOGoSentFolderName = "Sent";

SOGoTrashFolderName = "Trash";

SOGoJunkFolderName = "Junk";

SOGoMailCustomFullName = YES;

// Authentication using SQL

SOGoUserSources = (
    {
        type = sql;
        id = users;
        viewURL = "mysql://sogo:DELETED@127.0.0.1:3306/sogo/users";
        canAuthenticate = YES;

        ModulesConstraints = {
            Mail = { c_webmail = y; };
            Calendar = { c_calendar = y; };
            ActiveSync = { c_activesync = y; };
        };

        // The algorithm used for password encryption when changing
        // passwords without Password Policies enabled.
        // Possible values are: plain, crypt, md5-crypt, ssha, ssha512.
        userPasswordAlgorithm = ssha512;
        prependPasswordScheme = YES;

        // Use `vmail.mailbox` as per-domain address book.
        isAddressBook = YES;
        displayName = "Domain Address Book";
        SOGoEnableDomainBasedUID = YES;
        DomainFieldName = "domain";
    },

    //{
    //    //
    //    // WARNING: all mail users can see/search ALL accounts.
    //    //
    //    displayName = "Global Address Book";
    //    type = sql;
    //    id = global_address_book;
    //    viewURL = "mysql://sogo:DELETED@127.0.0.1:3306/sogo/users";
    //    canAuthenticate = NO;
    //    isAddressBook = YES;
    //}
);

// Authentication using LDAP
/* LDAP backend
SOGoUserSources = (
    {
        // Used for user authentication
        type = ldap;
        id = users;
        canAuthenticate = YES;
        isAddressBook = NO;
        displayName = "LDAP Authentication";

        hostname = "PH_LDAP_URI";
        baseDN = "PH_LDAP_BASEDN";
        bindDN = "PH_LDAP_BINDDN";
        bindPassword = "PH_LDAP_BINDPW";
        filter = "objectClass=mailUser AND accountStatus=active AND enabledService=mail AND enabledService=sogo";
        scope = SUB;

        // The algorithm used for password encryption when changing
        // passwords without Password Policies enabled.
        // Possible values are: plain, crypt, md5-crypt, ssha, ssha512.
        userPasswordAlgorithm = ssha512;

        CNFieldName = cn;
        IDFieldName = mail;
        bindFields = (mail);
        // value of UIDFieldName must be unique on entire server
        UIDFieldName = mail;
        IMAPLoginFieldName = mail;
    },
    {
        // Used for global address book
        type = ldap;
        id = global_addressbook;
        canAuthenticate = NO;
        isAddressBook = YES;
        displayName = "Global Address Book";

        // Listing of this LDAP source is only possible when performing a
        // search (respecting the SOGoSearchMinimumWordLength parameter)
        // or when explicitely typing a single dot.
        // Defaults to YES when unset.
        //
        // WARNING: if you have many accounts in this address book, it may
        //          reach server-side query size limit, or cause
        //          performance issue.
        listRequiresDot = NO;

        hostname = "PH_LDAP_URI";
        baseDN = "PH_LDAP_BASEDN";
        bindDN = "PH_LDAP_BINDDN";
        bindPassword = "PH_LDAP_BINDPW";
        filter = "((enabledService=mail AND accountStatus=active AND enabledService=displayedInGlobalAddressBook) AND ((objectClass=mailUser AND enabledService=sogo) OR (objectClass=mailList) OR (objectClass=mailAlias)))";
        scope = SUB;

        IDFieldName = mail;
        bindFields = (mail);
        // value of UID field must be unique on whole server.
        UIDFieldName = mail;
        IMAPLoginFieldName = mail;

        CNFieldName = cn;
        SearchFieldNames = (cn, sn, displayName, telephoneNumber, mail, shadowAddress, departmentNumber);
    }
);
LDAP backend */

}

sebastien

sebastien

2022-11-30 10:12

administrator   ~0016432

Could you please also provide a backtrace according to this doc : https://www.sogo.nu/support/faq/how-do-i-debug-sogo.html

Thank you

afro

afro

2022-11-30 10:21

reporter   ~0016433

-bash-4.2$ gdb --args /usr/sbin/sogod -WOUseWatchDog NO -WONoDetach YES -WOPort 127.0.0.1:20000 -WOWorkersCount 1 -WOLogFile - -WOPidFile /tmp/sogo.pid
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-120.el7
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/sbin/sogod...Reading symbols from /usr/lib/debug/usr/sbin/sogod.debug...done.
done.
(gdb) run
Starting program: /usr/sbin/sogod -WOUseWatchDog NO -WONoDetach YES -WOPort 127.0.0.1:20000 -WOWorkersCount 1 -WOLogFile - -WOPidFile /tmp/sogo.pid
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
/usr/sbin/sogod: Uncaught exception NSInvalidArgumentException, reason: Can not determine type information for -[GSDictionary setObject:forKey:]
[Inferior 1 (process 3286) exited with code 01]

sebastien

sebastien

2022-11-30 10:23

administrator   ~0016434

Ok found then problem, I will do a fix asap and rebuild sorry for the inconvenience

afro

afro

2022-11-30 12:06

reporter   ~0016435

I updated to version "sogo.x86_64 0:5.8.0.20221130-1.el7", but still with the same error

afro

afro

2022-11-30 12:10

reporter   ~0016436

The same problem happens also in Rocky Linux 8.7:
/usr/sbin/sogod: Uncaught exception NSInvalidArgumentException, reason: Can not determine type information for -[GSDictionary setObject:forKey:]

sebastien

sebastien

2022-11-30 12:15

administrator   ~0016438

Wait for build

sebastien

sebastien

2022-11-30 13:11

administrator   ~0016439

You can try to update. Let me know if the issue is fixed.

afro

afro

2022-11-30 13:36

reporter   ~0016440

Thank you very much for the quick update!
Since the updated file have the same name as older (sogo-5.8.0.20221130-1.el7), yum don't find updates. Do you know how to force an update to the final version?

sebastien

sebastien

2022-11-30 13:40

administrator   ~0016441

You can try to cache clean
https://www.thegeekdiary.com/how-to-clean-yum-cache-in-centos-rhel/
and reinstall
https://www.cyberciti.biz/faq/centos-redhat-fedora-linux-yum-reinstall-package-command/

afro

afro

2022-11-30 13:58

reporter   ~0016442

Thank you very much!
The commands "yum clean all" and "yum reinstall sogo" did the job.
Thanks again for the quick fix and for your kind help.

BTW, on Rocky Linux 8.7 it was also fixed with "dnf clean all" and "dnf reinstall sogo".

sebastien

sebastien

2022-11-30 14:01

administrator   ~0016443

Thanks for the feedback, you confirm sogod starts without crashing now ?

afro

afro

2022-11-30 14:13

reporter   ~0016444

Yes, sogod is now working fine and without crashes.

sebastien

sebastien

2022-11-30 14:18

administrator   ~0016445

Thanks for the feedback. I close this ticket.

Commit : https://github.com/Alinto/sogo/commit/a010f629f0493464e097c6ee7630cbd059eab24c

Issue History

Date Modified Username Field Change
2022-11-30 09:10 afro New Issue
2022-11-30 09:49 sebastien Note Added: 0016430
2022-11-30 09:52 sebastien Note Edited: 0016430
2022-11-30 10:06 afro Note Added: 0016431
2022-11-30 10:12 sebastien Note Added: 0016432
2022-11-30 10:17 sebastien Assigned To => sebastien
2022-11-30 10:17 sebastien Status new => assigned
2022-11-30 10:21 afro Note Added: 0016433
2022-11-30 10:23 sebastien Note Added: 0016434
2022-11-30 12:06 afro Note Added: 0016435
2022-11-30 12:10 afro Note Added: 0016436
2022-11-30 12:15 sebastien Note Added: 0016438
2022-11-30 13:11 sebastien Note Added: 0016439
2022-11-30 13:36 afro Note Added: 0016440
2022-11-30 13:40 sebastien Note Added: 0016441
2022-11-30 13:58 afro Note Added: 0016442
2022-11-30 14:01 sebastien Note Added: 0016443
2022-11-30 14:13 afro Note Added: 0016444
2022-11-30 14:18 sebastien Note Added: 0016445
2022-11-30 14:18 sebastien Status assigned => resolved
2022-11-30 14:18 sebastien Resolution open => fixed
2022-11-30 14:18 sebastien Fixed in Version => 5.8.0