Hi.
I'm running Carbonio CE 26.3.1 on RHEL8.
Apparently the automatic renewal of Let's Encrypt SSL certificates stopped working after upgrading to 25.12.0.
I see that now when the certificates are expiring one by one.
Any idea how to fix this?
[zextras@smtp ~]$ certbot certificates
An unexpected error occurred:
KeyError: 'manual'
Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile /tmp/certbot-log-j7ocicto/log or re-run Certbot with -v for more details.
[zextras@smtp ~]$ cat /tmp/certbot-log-j7ocicto/log
2026-03-17 13:56:57,083:DEBUG:certbot._internal.main:certbot version: 2.11.1
2026-03-17 13:56:57,083:DEBUG:certbot._internal.main:Location of certbot entry point: /opt/zextras/common/certbot/bin/carbonio-certbot
2026-03-17 13:56:57,083:DEBUG:certbot._internal.main:Arguments: []
2026-03-17 13:56:57,084:DEBUG:certbot._internal.main:Discovered plugins: PluginsRegistry()
2026-03-17 13:56:57,086:DEBUG:certbot._internal.log:Exiting abnormally:
Traceback (most recent call last):
File "/opt/zextras/common/certbot/bin/carbonio-certbot", line 8, in <module>
sys.exit(main())
File "/opt/zextras/common/certbot/lib/python3.8/site-packages/certbot/main.py", line 19, in main
return internal_main.main(cli_args)
File "/opt/zextras/common/certbot/lib/python3.8/site-packages/certbot/_internal/main.py", line 1877, in main
config = cli.prepare_and_parse_args(plugins, cli_args)
File "/opt/zextras/common/certbot/lib/python3.8/site-packages/certbot/_internal/cli/__init__.py", line 370, in prepare_and_parse_args
helpful.add(
File "/opt/zextras/common/certbot/lib/python3.8/site-packages/certbot/_internal/cli/helpful.py", line 418, in add
self.actions.append(self._add(topics, *args, **kwargs))
File "/opt/zextras/common/certbot/lib/python3.8/site-packages/certbot/_internal/cli/helpful.py", line 441, in _add
if not isinstance(topic, bool) and self.visible_topics[topic]:
KeyError: 'manual'
2026-03-17 13:56:57,086:ERROR:certbot._internal.log:An unexpected error occurred:
2026-03-17 13:56:57,086:ERROR:certbot._internal.log:KeyError: 'manual'
Thanks!
We are having the same problem here.
Running on Rocky 8.
Hi!
Any hints how to help to debug this issue - as at the moment we are not able to renew mail certs...
Gruesse
Michael
Guys,
Could you please confirm if the issue still exists after applying the 26.3.2 ?
Hi.
I've upgraded.
[zextras@smtp ~]$ zmcontrol -v
Carbonio Release 26.3.2
and the issue is still very much persistent.
Hi!
As asked in https://community.zextras.com/forum/carbonio-news/reporting-issues-on-carbonio-community-edition/ - I reported in addition an issue -> removed link
and yes
$ zmcontrol -v
Carbonio Release 26.3.2
Gruesse
Michael
@hwoffinden did you try to reinstall the package carbonio-certbot ?
dnf reinstall carbonio-certbot
Can you check the contents for cerbot python folder and share the output ?
dnf install tree tree /opt/zextras/common/certbot/lib/python3.8/site-packages/certbot/
@mgarbo No I haven't, but thanks for the tip.
I will try it, when I return from my vacation, and let you know.
Hi!
Performed "dnf reinstall carbonio-certbot"...
No change...
# cat log
2026-04-18 22:57:17,550:DEBUG:certbot._internal.main:certbot version: 2.11.1
2026-04-18 22:57:17,550:DEBUG:certbot._internal.main:Location of certbot entry point: /opt/zextras/common/certbot/bin/carbonio-certbot
2026-04-18 22:57:17,550:DEBUG:certbot._internal.main:Arguments: []
2026-04-18 22:57:17,550:DEBUG:certbot._internal.main:Discovered plugins: PluginsRegistry()
2026-04-18 22:57:17,555:DEBUG:certbot._internal.log:Exiting abnormally:
Traceback (most recent call last):
File "/opt/zextras/common/certbot/bin/carbonio-certbot", line 8, in <module>
sys.exit(main())
File "/opt/zextras/common/certbot/lib/python3.8/site-packages/certbot/main.py", line 19, in main
return internal_main.main(cli_args)
File "/opt/zextras/common/certbot/lib/python3.8/site-packages/certbot/_internal/main.py", line 1877, in main
config = cli.prepare_and_parse_args(plugins, cli_args)
File "/opt/zextras/common/certbot/lib/python3.8/site-packages/certbot/_internal/cli/__init__.py", line 370, in prepare_and_parse_args
helpful.add(
File "/opt/zextras/common/certbot/lib/python3.8/site-packages/certbot/_internal/cli/helpful.py", line 418, in add
self.actions.append(self._add(topics, *args, **kwargs))
File "/opt/zextras/common/certbot/lib/python3.8/site-packages/certbot/_internal/cli/helpful.py", line 441, in _add
if not isinstance(topic, bool) and self.visible_topics[topic]:
KeyError: 'manual'
2026-04-18 22:57:17,555:ERROR:certbot._internal.log:An unexpected error occurred:
2026-04-18 22:57:17,555:ERROR:certbot._internal.log:KeyError: 'manual'
Output of tree:
# tree /opt/zextras/common/certbot/lib/python3.8/site-packages/certbot/
/opt/zextras/common/certbot/lib/python3.8/site-packages/certbot/
├── achallenges.py
├── compat
│ ├── filesystem.py
│ ├── __init__.py
│ ├── misc.py
│ ├── os.py
│ ├── _path.py
│ └── __pycache__
├── configuration.py
├── crypto_util.py
├── display
│ ├── __init__.py
│ ├── ops.py
│ ├── __pycache__
│ └── util.py
├── errors.py
├── __init__.py
├── interfaces.py
├── _internal
│ ├── account.py
│ ├── auth_handler.py
│ ├── cert_manager.py
│ ├── cli
│ │ ├── cli_constants.py
│ │ ├── cli_utils.py
│ │ ├── group_adder.py
│ │ ├── helpful.py
│ │ ├── __init__.py
│ │ ├── paths_parser.py
│ │ ├── plugins_parsing.py
│ │ ├── __pycache__
│ │ ├── subparsers.py
│ │ └── verb_help.py
│ ├── client.py
│ ├── constants.py
│ ├── display
│ │ ├── completer.py
│ │ ├── dummy_readline.py
│ │ ├── __init__.py
│ │ ├── obj.py
│ │ ├── __pycache__
│ │ └── util.py
│ ├── eff.py
│ ├── error_handler.py
│ ├── hooks.py
│ ├── __init__.py
│ ├── lock.py
│ ├── log.py
│ ├── main.py
│ ├── plugins
│ │ ├── disco.py
│ │ ├── __init__.py
│ │ ├── manual.py
│ │ ├── null.py
│ │ ├── __pycache__
│ │ ├── selection.py
│ │ ├── standalone.py
│ │ └── webroot.py
│ ├── __pycache__
│ ├── renewal.py
│ ├── snap_config.py
│ ├── storage.py
│ ├── tests
│ │ ├── account_test.py
│ │ ├── auth_handler_test.py
│ │ ├── cert_manager_test.py
│ │ ├── client_test.py
│ │ ├── cli_test.py
│ │ ├── compat
│ │ │ ├── filesystem_test.py
│ │ │ ├── __init__.py
│ │ │ ├── misc_test.py
│ │ │ ├── os_test.py
│ │ │ └── __pycache__
│ │ ├── configuration_test.py
│ │ ├── crypto_util_test.py
│ │ ├── display
│ │ │ ├── completer_test.py
│ │ │ ├── __init__.py
│ │ │ ├── internal_util_test.py
│ │ │ ├── obj_test.py
│ │ │ ├── ops_test.py
│ │ │ ├── __pycache__
│ │ │ └── util_test.py
│ │ ├── eff_test.py
│ │ ├── error_handler_test.py
│ │ ├── errors_test.py
│ │ ├── helpful_test.py
│ │ ├── hook_test.py
│ │ ├── __init__.py
│ │ ├── lock_test.py
│ │ ├── log_test.py
│ │ ├── main_test.py
│ │ ├── ocsp_test.py
│ │ ├── plugins
│ │ │ ├── common_test.py
│ │ │ ├── disco_test.py
│ │ │ ├── dns_common_test.py
│ │ │ ├── enhancements_test.py
│ │ │ ├── __init__.py
│ │ │ ├── manual_test.py
│ │ │ ├── null_test.py
│ │ │ ├── __pycache__
│ │ │ ├── selection_test.py
│ │ │ ├── standalone_test.py
│ │ │ ├── storage_test.py
│ │ │ ├── util_test.py
│ │ │ └── webroot_test.py
│ │ ├── __pycache__
│ │ ├── renewal_test.py
│ │ ├── renewupdater_test.py
│ │ ├── reverter_test.py
│ │ ├── storage_test.py
│ │ └── util_test.py
│ └── updater.py
├── main.py
├── ocsp.py
├── plugins
│ ├── common.py
│ ├── dns_common_lexicon.py
│ ├── dns_common.py
│ ├── dns_test_common_lexicon.py
│ ├── dns_test_common.py
│ ├── enhancements.py
│ ├── __init__.py
│ ├── __pycache__
│ ├── storage.py
│ └── util.py
├── __pycache__
├── py.typed
├── reverter.py
├── ssl-dhparams.pem
├── tests
│ ├── acme_util.py
│ ├── __init__.py
│ ├── __pycache__
│ ├── testdata
│ │ ├── cert_2048.pem
│ │ ├── cert_512_bad.pem
│ │ ├── cert_512.pem
│ │ ├── cert-5sans_512.pem
│ │ ├── cert_fullchain_2048.pem
│ │ ├── cert_intermediate_1.pem
│ │ ├── cert_intermediate_2.pem
│ │ ├── cert_leaf.pem
│ │ ├── cert-nosans_nistp256.pem
│ │ ├── cert-san_512.pem
│ │ ├── cli.ini
│ │ ├── csr_512.der
│ │ ├── csr_512.pem
│ │ ├── csr-6sans_512.conf
│ │ ├── csr-6sans_512.pem
│ │ ├── csr-nonames_512.pem
│ │ ├── csr-nosans_512.conf
│ │ ├── csr-nosans_512.pem
│ │ ├── csr-nosans_nistp256.pem
│ │ ├── csr-san_512.pem
│ │ ├── ec_prime256v1_key.pem
│ │ ├── ec_secp384r1_key.pem
│ │ ├── ec_secp521r1_key.pem
│ │ ├── nistp256_key.pem
│ │ ├── ocsp_certificate.pem
│ │ ├── ocsp_issuer_certificate.pem
│ │ ├── ocsp_responder_certificate.pem
│ │ ├── os-release
│ │ ├── README
│ │ ├── rsa2048_key.pem
│ │ ├── rsa256_key.pem
│ │ ├── rsa512_key.pem
│ │ ├── sample-archive
│ │ │ ├── cert1.pem
│ │ │ ├── chain1.pem
│ │ │ ├── fullchain1.pem
│ │ │ └── privkey1.pem
│ │ ├── sample-archive-ec
│ │ │ ├── cert1.pem
│ │ │ ├── chain1.pem
│ │ │ ├── fullchain1.pem
│ │ │ └── privkey1.pem
│ │ ├── sample-renewal-ancient.conf
│ │ ├── sample-renewal.conf
│ │ ├── sample-renewal-deprecated-option.conf
│ │ ├── sample-renewal-ec.conf
│ │ └── webrootconftest.ini
│ └── util.py
└── util.py
28 directories, 158 files
Gruesse
Michael
Hi.
I also performed "dnf reinstall carbonio-certbot"...
No change...
Hi!
Any news? Any ideas how to debug, troubleshoot?
Gruesse
Michael
Hi!
I would also like to have some kind of feedback. Tomorrow it's 2 months since I made this initial post, and so far nothing!
Regards,
Henrik
Hi!
Update to 26.6.0 ->
[zextras@xxx ~]$ certbot certificates
/opt/zextras/common/certbot/lib64/python3.8/site-packages/OpenSSL/SSL.py:16: CryptographyDeprecationWarning: Python 3.8 is no longer supported by the Python core team and support for it is deprecated in cryptography. The next release of cryptography will remove
support for Python 3.8.
from cryptography import x509
Traceback (most recent call last):
File "/opt/zextras/common/certbot/bin/carbonio-certbot", line 5, in <module>
from certbot.main import main
File "/opt/zextras/common/certbot/lib/python3.8/site-packages/certbot/main.py", line 6, in <module>
from certbot._internal import main as internal_main
File "/opt/zextras/common/certbot/lib/python3.8/site-packages/certbot/_internal/main.py", line 24, in <module>
from acme import client as acme_client
File "/opt/zextras/common/certbot/lib/python3.8/site-packages/acme/client.py", line 24, in <module>
from acme import challenges
File "/opt/zextras/common/certbot/lib/python3.8/site-packages/acme/challenges.py", line 24, in <module>
from acme import crypto_util
File "/opt/zextras/common/certbot/lib/python3.8/site-packages/acme/crypto_util.py", line 372, in <module>
extensions: Optional[List[crypto.X509Extension]] = None,
File "/opt/zextras/common/certbot/lib64/python3.8/site-packages/cryptography/utils.py", line 79, in __getattr__
obj = getattr(self._module, name)
AttributeError: module 'OpenSSL.crypto' has no attribute 'X509Extension'
Gruesse
Michael
Hi!
I also upgraded to 26.6.0, and got the same error message:
[zextras@smtp ~]$ certbot -v certificates
/opt/zextras/common/certbot/lib64/python3.8/site-packages/OpenSSL/SSL.py:16: CryptographyDeprecationWarning: Python 3.8 is no longer supported by the Python core team and support for it is deprecated in cryptography. The next release of cryptography will remove support for Python 3.8.
from cryptography import x509
Traceback (most recent call last):
File "/opt/zextras/common/certbot/bin/carbonio-certbot", line 5, in <module>
from certbot.main import main
File "/opt/zextras/common/certbot/lib/python3.8/site-packages/certbot/main.py", line 6, in <module>
from certbot._internal import main as internal_main
File "/opt/zextras/common/certbot/lib/python3.8/site-packages/certbot/_internal/main.py", line 24, in <module>
from acme import client as acme_client
File "/opt/zextras/common/certbot/lib/python3.8/site-packages/acme/client.py", line 24, in <module>
from acme import challenges
File "/opt/zextras/common/certbot/lib/python3.8/site-packages/acme/challenges.py", line 24, in <module>
from acme import crypto_util
File "/opt/zextras/common/certbot/lib/python3.8/site-packages/acme/crypto_util.py", line 372, in <module>
extensions: Optional[List[crypto.X509Extension]] = None,
File "/opt/zextras/common/certbot/lib64/python3.8/site-packages/cryptography/utils.py", line 79, in __getattr__
obj = getattr(self._module, name)
AttributeError: module 'OpenSSL.crypto' has no attribute 'X509Extension'
Any chance of a quick fix for this?
Regards
Henrik
