Unable to send and receive mails

From yesterday rouncube mailbox is not working. I have got these logs.

root@box:~# tail -n 5 -f  /var/log/roundcubemail/errors.log
[30-Oct-2024 12:28:08 +0530]: <42cga7pp> IMAP Error: Could not save message in Drafts in /usr/local/lib/roundcubemail/program/include/rcmail_sendmail.php on line 546 (POST /mail/?_task=mail&_unlock=loading1730271487721&_framed=1&_action=send)
[30-Oct-2024 12:33:09 +0530]: <42cga7pp> IMAP Error: Could not save message in Drafts in /usr/local/lib/roundcubemail/program/include/rcmail_sendmail.php on line 546 (POST /mail/?_task=mail&_unlock=loading1730271788719&_framed=1&_action=send)
[30-Oct-2024 12:37:35 +0530]: <tclbf0hc> IMAP Error: Login failed for user@example.com against localhost from 12.13.19.36. AUTHENTICATE PLAIN: Authentication failed. in /usr/local/lib/roundcubemail/program/lib/Roundcube/rcube_imap.php on line 211 (POST /mail/?_task=login&_action=login)
[30-Oct-2024 12:37:46 +0530]: <tclbf0hc> IMAP Error: Login failed for user@example.com against localhost from 12.13.19.36. AUTHENTICATE PLAIN: Authentication failed. in /usr/local/lib/roundcubemail/program/lib/Roundcube/rcube_imap.php on line 211 (POST /mail/?_task=login&_action=login)
[30-Oct-2024 12:38:10 +0530]: <42cga7pp> IMAP Error: Could not save message in Drafts in /usr/local/lib/roundcubemail/program/include/rcmail_sendmail.php on line 546 (POST /mail/?_task=mail&_unlock=loading1730272089725&_framed=1&_action=send)
root@box:~# tail -n 2 -f /var/log/roundcubemail/errors
[01-Aug-2020 00:50:12 Asia/Kolkata] PHP Warning:  count(): Parameter must be an array or an object that implements Countable in /usr/local/lib/roundcubemail/plugins/carddav/carddav_backend.php on line 517
[01-Aug-2020 00:50:23 Asia/Kolkata] PHP Warning:  count(): Parameter must be an array or an object that implements Countable in /usr/local/lib/roundcubemail/plugins/carddav/carddav_backend.php on line 517

Dovecot configuration file is below mentioned.

root@box:~# cat /etc/dovecot/dovecot.conf
## Dovecot configuration file

# If you're in a hurry, see http://wiki2.dovecot.org/QuickConfiguration

# "doveconf -n" command gives a clean output of the changed settings. Use it
# instead of copy&pasting files when posting to the Dovecot mailing list.

# '#' character and everything after it is treated as comments. Extra spaces
# and tabs are ignored. If you want to use either of these explicitly, put the
# value inside quotes, eg.: key = "# char and trailing whitespace  "

# Most (but not all) settings can be overridden by different protocols and/or
# source/destination IPs by placing the settings inside sections, for example:
# protocol imap { }, local 127.0.0.1 { }, remote 10.0.0.0/8 { }

# Default values are shown for each setting, it's not required to uncomment
# those. These are exceptions to this though: No sections (e.g. namespace {})
# or plugin settings are added by default, they're listed only as examples.
# Paths are also just examples with the real defaults being based on configure
# options. The paths listed here are for configure --prefix=/usr
# --sysconfdir=/etc --localstatedir=/var

# Enable installed protocols
!include_try /usr/share/dovecot/protocols.d/*.protocol

# A comma separated list of IPs or hosts where to listen in for connections.
# "*" listens in all IPv4 interfaces, "::" listens in all IPv6 interfaces.
# If you want to specify non-default ports or anything more complex,
# edit conf.d/master.conf.
#listen = *, ::

# Base directory where to store runtime data.
#base_dir = /var/run/dovecot/

# Name of this instance. In multi-instance setup doveadm and other commands
# can use -i <instance_name> to select which instance is used (an alternative
# to -c <config_path>). The instance name is also added to Dovecot processes
# in ps output.
#instance_name = dovecot

# Greeting message for clients.
#login_greeting = Dovecot ready.

# Space separated list of trusted network ranges. Connections from these
# IPs are allowed to override their IP addresses and ports (for logging and
# for authentication checks). disable_plaintext_auth is also ignored for
# these networks. Typically you'd specify your IMAP proxy servers here.
#login_trusted_networks =

# Space separated list of login access check sockets (e.g. tcpwrap)
#login_access_sockets =

# With proxy_maybe=yes if proxy destination matches any of these IPs, don't do
# proxying. This isn't necessary normally, but may be useful if the destination
# IP is e.g. a load balancer's IP.
#auth_proxy_self =

# Show more verbose process titles (in ps). Currently shows user name and
# IP address. Useful for seeing who are actually using the IMAP processes
# (eg. shared mailboxes or if same uid is used for multiple accounts).
#verbose_proctitle = no

# Should all processes be killed when Dovecot master process shuts down.
# Setting this to "no" means that Dovecot can be upgraded without
# forcing existing client connections to close (although that could also be
# a problem if the upgrade is e.g. because of a security fix).
#shutdown_clients = yes

# If non-zero, run mail commands via this many connections to doveadm server,
# instead of running them directly in the same process.
#doveadm_worker_count = 0
# UNIX socket or host:port used for connecting to doveadm server
#doveadm_socket_path = doveadm-server

# Space separated list of environment variables that are preserved on Dovecot
# startup and passed down to all of its child processes. You can also give
# key=value pairs to always set specific settings.
#import_environment = TZ

##
## Dictionary server settings
##

# Dictionary can be used to store key=value lists. This is used by several
# plugins. The dictionary can be accessed either directly or though a
# dictionary server. The following dict block maps dictionary names to URIs
# when the server is used. These can then be referenced using URIs in format
# "proxy::<name>".

dict {
  #quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
  #expire = sqlite:/etc/dovecot/dovecot-dict-sql.conf.ext
}

# Most of the actual configuration gets included below. The filenames are
# first sorted by their ASCII value and parsed in that order. The 00-prefixes
# in filenames are intended to make it easier to understand the ordering.
!include conf.d/*.conf

# A config file can also tried to be included without giving an error if
# it's not found:
!include_try local.conf

postfix is unable to running but activated when restart postfix always coming active (exited) message

root@box:~# systemctl status postfix
● postfix.service - Postfix Mail Transport Agent
   Loaded: loaded (/lib/systemd/system/postfix.service; enabled; vendor preset: enabled)
   Active: active (exited) since Wed 2024-10-30 12:32:34 +0530; 18min ago
  Process: 7948 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
 Main PID: 7948 (code=exited, status=0/SUCCESS)

Oct 30 12:32:34 box.example.email systemd[1]: Starting Postfix Mail Transport Agent...
Oct 30 12:32:34 box.example.email systemd[1]: Started Postfix Mail Transport Agent.

Mail in a box service is working fine

root@box:~# systemctl status mailinabox.service
● mailinabox.service - Mail-in-a-Box System Management Service
   Loaded: loaded (/root/mailinabox/conf/mailinabox.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2024-10-30 12:00:47 +0530; 50min ago
 Main PID: 1599 (python)
    Tasks: 1 (limit: 2359)
   CGroup: /system.slice/mailinabox.service
           └─1599 python /root/mailinabox/management/daemon.py

Oct 30 12:00:47 box.example.email systemd[1]: Started Mail-in-a-Box System Management Service.
Oct 30 12:00:49 box.example.email start[1599]:  * Serving Flask app 'daemon' (lazy loading)
Oct 30 12:00:49 box.example.email start[1599]:  * Environment: production
Oct 30 12:00:49 box.example.email start[1599]:    WARNING: This is a development server. Do not use it in a production deployment.
Oct 30 12:00:49 box.example.email start[1599]:    Use a production WSGI server instead.
Oct 30 12:00:49 box.example.email start[1599]:  * Debug mode: off
Oct 30 12:00:49 box.example.email start[1599]:  * Running on http://127.0.0.1:10222/ (Press CTRL+C to quit)

How to fix these issues?

I agree it is strange that it suddenly does not work, but it sometimes happens, e.g. due to (background) OS updates.
You can try to reload the browser, restart Nginx and php (or simply the whole box :wink: )
Questions:

  • Did you change anything on the box in the past few days or weeks?
  • Are you able to send/receive using another email application (e.g. Android app or Windows application)
  • What version of Mail-in-a-Box is this? I don’t think Flask is in use for a while now. Which also would mean you’re missing out on Roundcube (security) updates
  • Did you do any local modifications?