All actions with email notifications enabled crash

Hi,
i made a fresh install yesterday and during install i tested the email settings and got the test email from the Passbolt server. Then after the initial setup was over i wanted to put my account on a second browser. So i did an account recovery which just landet me on a ‘An Internal Error Has Occured’ Page with a red banner saying ‘You are not authorized to access that location’. After playing around a bit on my main browser i noticed that all tasks that have email notifications enabled would fail (eg password creation, user creation, …). so i looked at the error log and found the following for all actions that failed: ’
2020-04-07 09:58:32 Error: [PDOException] SQLSTATE[HY000]: General error: 1364 Field ‘email’ doesn’t have a default value (/var/www/passbolt/vendor/cakephp/cakephp/src/Database/Statement/MysqlStatement.php:38)
Request URL: /users/recover
Referer URL: https://..***.net/users/recover’
(i censored the domain)

The MysqlStatemant file is essentially useless and doesn’t tell us anything but the Field ‘email’ only exists in the ‘email_queue’ table. So my guess is that there is some field in some configuration file or in the database that is not correctly set and then whenever it tries to send an email (put it into the queue) loading this (presumably empty) value and just crashing because the value cannot be set to null. Resulting in not being able to recover your account or create new ones. (creation and recovery seem to work with email notification disabled but you can only do the actual recovery/first time setup with the link) or do anything that requires emails for that matter.

If you guys could take a look at this or tell me where the relevant code is that calls the Mysqlstatement file during email preparation so i can track down where that value comes from.

  • Sammy

Note:

  • the ‘./bin/cake passbolt send_test_email --recipient=youremail@domain.com’ command works without problems
  • and Yes i have self signed certs for testing at the moment

Systeminfo:

  • Debian GNU/Linux 10 (buster)
  • nginx/1.14.2
  • 10.3.22-MariaDB-0+deb10u1
  • PHP 7.3.14-1~deb10u1 (cli) (built: Feb 16 2020 15:07:23) ( NTS )
  • Passbolt Pro (2.12.0)

Healthcheck:
Environment

[PASS] PHP version 7.3.14-1~deb10u1.
[PASS] PCRE compiled with unicode support.
[PASS] The temporary directory and its content are writable.
[PASS] The public image directory and its content are writable.
[PASS] The logs directory and its content are writable.
[PASS] GD or Imagick extension is installed.
[PASS] Intl extension is installed.
[PASS] Mbstring extension is installed.

Config files

[PASS] The application config file is present
[PASS] The passbolt config file is present

Core config

[PASS] Debug mode is off.
[PASS] Cache is working.
[PASS] Unique value set for security.salt
[PASS] Full base url is set to https://..***.net
[PASS] App.fullBaseUrl validation OK.
[PASS] /healthcheck/status is reachable.

SSL Certificate

[FAIL] SSL peer certificate does not validate
[FAIL] Hostname does not match when validating certificates.
[WARN] Using a self-signed certificate
[HELP] fopen(): Unable to locate peer certificate CN
fopen(): Failed to enable crypto
fopen(https://..***.net/healthcheck/status.json): failed to open stream: operation failed

Database

[PASS] The application is able to connect to the database
[PASS] 31 tables found
[PASS] Some default content is present
[PASS] The database schema up to date.

GPG Configuration

[PASS] PHP GPG Module is installed and loaded.
[PASS] The environment variable GNUPGHOME is set to /home/www-data/.gnupg.
[PASS] The directory /home/www-data/.gnupg containing the keyring is writable by the webserver user.
[PASS] The server gpg key is not the default one
[PASS] The public key file is defined in config/passbolt.php and readable.
[PASS] The private key file is defined in config/passbolt.php and readable.
[PASS] The server key fingerprint matches the one defined in config/passbolt.php.
[PASS] The server public key defined in the config/passbolt.php (or environment variables) is in the keyring.
[PASS] There is a valid email id defined for the server key.
[PASS] The public key can be used to encrypt a message.
[PASS] The private key can be used to sign a message.
[PASS] The public and private keys can be used to encrypt and sign a message.
[PASS] The private key can be used to decrypt a message.
[PASS] The private key can be used to decrypt and verify a message.
[PASS] The public key can be used to verify a signature.

Application configuration

[PASS] Using latest passbolt version (2.12.0).
[PASS] Passbolt is configured to force SSL use.
[PASS] App.fullBaseUrl is set to HTTPS.
[PASS] Selenium API endpoints are disabled.
[PASS] Search engine robots are told not to index content.
[PASS] Registration is closed, only administrators can add users.
[PASS] Serving the compiled version of the javascript app
[PASS] All email notifications will be sent.

2 error(s) found. Hang in there!

It may be because the cached version of the models doesn’t match your DB.
Can you try:

./bin/cake cache clear_all

Wow, that actually fixed it.
Thx.
Do you guys have a trouble shooting page other than the forum?
If yes i couldn’t find it. Commands like that should be on a page with a collection of things you can try before posting. But that’s just a suggestion.

Hello,

Do you guys have a trouble shooting page other than the forum?

We have a FAQ but you’re right this particular error is not in there. There is room for improvement indeed.

Executing the cache clear_all is actually part of the installation / update process (it is part of the install script and on the documentation page of the update).

I think this issue can happen for example when a http request / cli command is executed before the process is complete. It’s quite rare and very hard to control system wise, and error messages are not always the same for example it can also be: Exception: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'EmailQueue.to.

This topic was automatically closed 5 days after the last reply. New replies are no longer allowed.