Wer den MDaemon Email Server zusammen mit einem Let’s Encrypt-Zertifkat nutzt, stößt womöglich auf folgenden Fehler:

Bei der automatischen Verlängerung des Zertifikats bricht der Vorgang aufgrund eines Fehlers ab. Das Log ist leider nicht wirklich aussagekräftig:

Starting Script run at 08/07/2023 11:13:32.
Starting Script run at 08/07/2023 11:13:32.
Get the MDaemon paths.
The MDaemon.ini Path is C:\MDaemon\APP\MDaemon.ini.
The MDaemon APP Path is C:\MDaemon\APP\.
The MDaemon Pem path is C:\MDaemon\PEM\.
The MDaemon Log path is C:\MDaemon\Logs\.
The MDaemon RAW path is C:\MDaemon\Queues\Raw\.
The WorldClient Path is C:\MDaemon\WorldClient.
The WorldClient HTML Path is C:\MDaemon\WorldClient\HTML.
The well-known path is C:\MDaemon\WorldClient\HTML\.well-known.
The Acme-Challenge path is C:\MDaemon\WorldClient\HTML\.well-known\Acme-challenge.
The State Path is C:\MDaemon\PEM\_LEState.
The FQDN is set to sub.domain.tld.
The email address is set to postmaster@sub.domain.tld.
Setting the system to use the LetsEncrypt Live Service.
The certificate thumbrpint in the MDaemon.ini file is Certificate-Hash.
Looking for the local certificate.
I found a certifcate from LetsEncrypt.
The certificate is going to expire in the next 30 days, requesting a new certificate.
Importing the ACMESharp module.
Getting an updated state.
The account is setup and the status is valid.
Getting an updated state.
Getting service directory.
Getting a new Nonce
Getting identifier for sub.domain.tld.
Getting identifier for sub.domain.tld.
Getting identifier for .
Getting identifier for .
Creating new certificate.
The script is stopping because an error occurred.

Etwas anders sieht die Ausgabe in der PowerShell aus:

Starting Script run at 08/07/2023 11:23:41.

Checking HKLM:\SOFTWARE\Alt-N Technologies\MDaemon                                                 Checking HKLM:\SOFTWARE\Alt-N Technologies\MDaemon                                                 Checking HKLM:\SOFTWARE\Alt-N Technologies\WebAdmin                                                Checking HKLM:\SOFTWARE\Alt-N Technologies\WebAdmin                                                Starting Script run at 08/07/2023 11:23:41.
Get the MDaemon paths.
The MDaemon.ini Path is C:\MDaemon\APP\MDaemon.ini.
The MDaemon APP Path is C:\MDaemon\APP\.
The MDaemon Pem path is C:\MDaemon\PEM\.
The MDaemon Log path is C:\MDaemon\Logs\.
The MDaemon RAW path is C:\MDaemon\Queues\Raw\.
The WorldClient Path is C:\MDaemon\WorldClient.
The WorldClient HTML Path is C:\MDaemon\WorldClient\HTML.
The well-known path is C:\MDaemon\WorldClient\HTML\.well-known.
The Acme-Challenge path is C:\MDaemon\WorldClient\HTML\.well-known\Acme-challenge.
The State Path is C:\MDaemon\PEM\_LEState.
The FQDN is set to sub.domain.tld.
The email address is set to postmaster@sub.domain.tld.
Setting the system to use the LetsEncrypt Live Service.
The certificate thumbrpint in the MDaemon.ini file is Certificate-Hash.
Looking for the local certificate.
I found a certifcate from LetsEncrypt.
The certificate is going to expire in the next 30 days, requesting a new certificate.
Importing the ACMESharp module.
Getting an updated state.
The account is setup and the status is valid.
Getting another updated state, just in case.
Getting an updated state.
Getting service directory.


ResourceUrl : https://acme-v02.api.letsencrypt.org/directory
NewAccount  : https://acme-v02.api.letsencrypt.org/acme/new-acct
NewAuthz    :
NewNonce    : https://acme-v02.api.letsencrypt.org/acme/new-nonce
NewOrder    : https://acme-v02.api.letsencrypt.org/acme/new-order
KeyChange   : https://acme-v02.api.letsencrypt.org/acme/key-change
RevokeCert  : https://acme-v02.api.letsencrypt.org/acme/revoke-cert
Meta        : AcmeDirectoryMeta

Getting a new Nonce
Secret
Getting identifier for sub.domain.tld.
Getting identifier for sub.domain.tld.
Getting identifier for .
Getting identifier for .
Creating new certificate.
The script is stopping because an error occurred.
New-ACMEIdentifier : Das Argument für den Parameter "Value" kann nicht überprüft werden. Das
Argument ist NULL oder leer. Geben Sie ein Argument an, das nicht NULL oder leer ist, und führen
Sie den Befehl erneut aus.
In C:\mdaemon\LetsEncrypt\letsencrypt.ps1:579 Zeichen:38
+     $Identifier = New-ACMEIdentifier $domain -ErrorVariable LogText
+                                      ~~~~~~~
    + CategoryInfo          : InvalidData: (:) [New-ACMEIdentifier], ParameterBindingValidationEx
   ception
    + FullyQualifiedErrorId : ParameterArgumentValidationError,New-ACMEIdentifier

LastWriteTime : 07.08.2023 11:23:42
Length        : 250
Name          : md501.raw

Kurzum: Mit dem Skript stimmt seit dem Update auf 26.0.2 etwas nicht. Vom Support erhielt ich folgende Antwort:

"Mit der Version 23.0.2 würde eine kleine Änderung im LetsEncrypt.ps1 getätigt,
welche bei MDaemon Servern ohne alternative Hostnamen in einen Fehler läuft.
Der Fehler ist inzwischen bekannt, das Skript muss auf Dateiebene am Server ausgetauscht werden.
Der Pfad ist im Normalfall "C:\MDaemon\LetsEncrypt\letsencrypt.ps1""

Ferner erhält man vom Support ein aktualisiertes Skript, danach läuft es wieder.