Name : BETA-TESTERS
Project name : ZW3B-API-BETA-TESTERS
Authorized. - 200 - Client API Name and Origin Wildcard OK
Configuration de serveur Mail Zimbra Collaboration OpenSource en ligne de commande.
NdM : 2023/11/27 - Compléments d'informations.
Différentes commandes pour configurer la suite Collaboration Open Source Zimbra qui est un serveur mail (une page web vaut mieux qu'un vieux mémo.txt).
La commande zmcontrol
:
Script avec 2 lignes
001zimbra@mail:~ $ zmcontrol -v 002Release 8.8.15.GA.3869.UBUNTU18.64 UBUNTU18_64 FOSS edition, Patch 8.8.15_P40.
Script avec 18 lignes
001zimbra@mail:~ $ zmcontrol status|stop|start|restart 002Host mail.zw3b.net 003 amavis Running 004 antispam Running 005 antivirus Running 006 ldap Running 007 logger Running 008 mailbox Running 009 mta Running 010 opendkim Running 011 service webapp Running 012 snmp Running 013 spell Running 014 stats Running 015 zimbra webapp Running 016 zimbraAdmin webapp Running 017 zimlet webapp Running 018 zmconfigd Running
La commande zmprov
permet de visualiser ou modifier les options du serveur.
gas
: get all serversgcf
: get configgs
: get serverms
: modifie serverSi vous chercher une valeur "acceptable" à une variable vous trouverez l'information par ici Config Guide Table content (ajouter le champ "value").
Exemple :
Script avec 3 lignes
001zimbra@mail:~ $ zmprov gs $(zmhostname) zimbraImapBindPort 002# name mail.zw3b.net 003zimbraImapBindPort: 143
La commande suivante zmprov gs $(zmhostname) | grep -i port
nous affiche les variables et les numéro des port (entre autres).
Script avec 9 lignes
001// expmle -> list port (non formel) 002zimbraImapBindPort to 7143 003zimbraImapProxyBindPort to 143 004zimbraImapSSLBindPort to 7993 005zimbraImapSSLProxyBindPort to 993 006zimbraPop3BindPort to 7110 007zimbraPop3ProxyBindPort to110 008zimbraPop3SSLBindPort to 7995 009zimbraPop3SSLProxyBindPort to 995
Script avec 6 lignes
001zimbra@mail:~ $ zmprov gas 002mail.domain.com 003zimbra@mail:~ $ zmprov ms $(zmhostname) zimbraImapBindAddress 10.59.199.201 004zimbra@mail:~ $ zmprov ms $(zmhostname) zimbraImapSSLBindAddress 10.59.199.201 005zimbra@mail:~ $ zmprov ms $(zmhostname) zimbraPop3BindAddress 10.9.199.201 006zimbra@mail:~ $ zmprov ms $(zmhostname) zimbraPop3SSLBindAddress 10.59.199.201
Script avec 1 ligne
001zimbra@mail:~ $ zmprov gs $(zmhostname) zimbraMtaMyNetworks
La configuration locale :
Script avec 1 ligne
001zimbra@mail:~ $ zmprov gcf zimbraMtaMyNetworks
Pour modifier donc :
Script avec 2 lignes
001zimbra@mail:~ $ zmprov ms $(zmhostname) zimbraMtaMyNetworks "127.0.0.0/8 [::1]/128 10.102.0.0/24 10.101.150.0/24 [2607:5300:60:9389:17:4:0:0000]/124 [2607:5300:60:9389:15:1:a:0]/112 10.101.150.0/24 [2607:5300:60:9389:15:1:a:0]/112" 002zimbra@mail:~ $ zmprov mcf zimbraMtaMyNetworks "127.0.0.0/8 [::1]/128 10.102.0.0/24 10.101.150.0/24 [2607:5300:60:9389:17:4:0:0000]/124 [2607:5300:60:9389:15:1:a:0]/112 [2607:5300:60:9389:15:1:a:0]/112 10.101.150.0/24 [2607:5300:60:9389:15:1:a:0]/112"
IPv4
|IPv6
| ou les 2 (both
))Script avec 2 lignes
001zimbra@mail:~ $ zmprov gs $(zmhostname) zimbraIPMode 002zimbraIPMode: ipv4
Pour configurer le mode "d'écoute" sur l'adresse IPv4 et sur l'adresse IPv6 du serveur Mail
Script avec 7 lignes
001zimbra@mail:~ $ zmprov ms $(zmhostname) zimbraIPMode both 002zimbra@mail:~ $ /opt/zimbra/libexec/zmiptool 003Setting local config zimbra_zmjava_options=-Xmx256m -Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2 -Djdk.tls.client.protocols=TLSv1,TLSv1.1,TLSv1.2 004Setting local config mailboxd_java_options=-server -Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2 -Djdk.tls.client.protocols=TLSv1,TLSv1.1,TLSv1.2 -Djava.awt.headless=true -Dsun.net.inetaddr.ttl=${networkaddress_cache_ttl} -Dorg.apache.jasper.compiler.disablejsr199=true -XX:+UseG1GC -XX:SoftRefLRUPolicyMSPerMB=1 -XX:+UnlockExperimentalVMOptions -XX:G1NewSizePercent=15 -XX:G1MaxNewSizePercent=45 -XX:-OmitStackTraceInFastThrow -verbose:gc -Xlog:gc*=info,safepoint=info:file=/opt/zimbra/log/gc.log:time:filecount=20,filesize=10m 005Setting local config mysql_bind_address=::1 006Setting local config antispam_mysql_host=::1 007zimbra@mail:~ $ zmcontrol restart
Script avec 2 lignes
001zimbra@mail:~ $ zmprov gs $(zmhostname) zimbraRemoteManagementPort 002zimbra@mail:~ $ zmprov ms $(zmhostname) zimbraRemoteManagementPort 1234
Script avec 3 lignes
001zimbra@mail:~ $ zmprov gcf zimbraFileUploadMaxSize # (default: 10485760) 002zimbra@mail:~ $ zmprov gcf zimbraMailContentMaxSize # default: 10240000) 003zimbra@mail:~ $ zmprov gcf zimbraMtaMaxMessageSize # (default: 10240000)
Pour modifier:
Script avec 6 lignes
001zimbra@mail:~ $ zmprov mcf zimbraMtaMaxMessageSize 51200000 002zimbra@mail:~ $ zmprov mcf zimbraMailContentMaxSize 51200000 && zmprov ms $(zmhostname) zimbraMailContentMaxSize 51200000 003zimbra@mail:~ $ zmprov mcf zimbraFileUploadMaxSize 52428800 && zmprov ms $(zmhostname) zimbraFileUploadMaxSize 52428800 004zimbra@mail:~ $ 005zimbra@mail:~ $ zmprov modifyConfig zimbraMtaMaxMessageSize 20480000 006zimbra@mail:~ $ postfix reload
Script avec 17 lignes
001zimbra@mail:~ $ zmprov gs $(zmhostname) zimbraServiceEnabled 002# name mail.zw3b.net 003zimbraServiceEnabled: amavis 004zimbraServiceEnabled: antivirus 005zimbraServiceEnabled: antispam 006zimbraServiceEnabled: opendkim 007zimbraServiceEnabled: service 008zimbraServiceEnabled: zimbra 009zimbraServiceEnabled: zimbraAdmin 010zimbraServiceEnabled: zimlet 011zimbraServiceEnabled: mailbox 012zimbraServiceEnabled: spell 013zimbraServiceEnabled: stats 014zimbraServiceEnabled: logger 015zimbraServiceEnabled: mta 016zimbraServiceEnabled: ldap 017zimbraServiceEnabled: snmp
-zimbraServiceEnabled
name_service+zimbraServiceEnabled
name_serviceExemple (pour désactiver l'anti-spam) :
Script avec 1 ligne
001zimbra@mail:~ $ zmprov ms $(zmhostname) -zimbraServiceEnabled antispam
Il faudrait être fou !
Pour le ré-activer, l'antispam :
Script avec 1 ligne
001zimbra@mail:~ $ zmprov ms $(zmhostname) +zimbraServiceEnabled antispam
On peut, on pourait aussi changer d'antispam en n'en installant un autre, je citerais Rspamd à la place de SpamAssassin .
Pour installer Rspamd dans la suite Collaboration Open Source Zimbra, voici comment-faire (forum Zimbra ).
Activer sur une adresse mail le wilcard d'un domaine
Script avec 2 lignes
001zimbra@mail:~ $ zmprov ma admin@domain_1.tld +zimbraMailCatchAllAddress @domain_1.tld 002zimbra@mail:~ $ zmprov ma admin@domain_2.tld +zimbraMailCatchAllAddress @domain_2.tld
"domain_2" est un alias de domaine de "domain_1" :/
Script avec 4 lignes
001zmprov ga admin@domain_1.tld zimbraMailCatchAllAddress 002# name mon_mail@domain_1.tld 003zimbraMailCatchAllAddress: @domain_1.tld 004zimbraMailCatchAllAddress: @domain_2.tld
Le mail "admin" est un alias de mon mail perso (ce n'est pas forcement bien).
zimbraMailCatchAllAddress
zimbraMailCatchAllForwardingAddress
zimbraMailCatchAllCanonicalAddress
Si vous souhaitez que le courrier de user@domain.com
ou user@zimbra.domain.com
apparaisse comme provenant de user@example.com
, vous pouvez définir l'adresse canonique pour l'ensemble du domaine.
Exemple :
Script avec 2 lignes
001zimbra@mail:~ $ zmprov md domain.com zimbraMailCatchAllAddress @domain.com zimbraMailCatchAllCanonicalAddress @example.com 002zimbra@mail:~ $ zmprov md zimbra.domain.com zimbraMailCatchAllAddress @zimbra.domain.com zimbraMailCatchAllCanonicalAddress @example.com
Script avec 3 lignes
001zmsshkeygen 002zmupdateauthkeys 003ssh -vi .ssh/zimbra_identity -o strictHostKeyChecking=no -p 1234 zimbra@mail.zw3b.net
Par exemple avec ce message : Disk /snap/snapd/20092 at 100% on mail.domain.com:
Script avec 1 ligne
001Sep 17 13:10:00 mail zimbramon[215866]: 215866:crit: Disk warning: mail.domain.com: /snap/snapd/20092 on device /dev/loop3 at 100%
Exclure tous les appareils en boucle de la surveillance avec la commande localconfig "zmstat_df_excludes
".
Script avec 3 lignes
001su - zimbra 002zimbra@mail:~ $ zmlocalconfig -e zmstat_df_excludes='/dev/loop0:/dev/loop1:/dev/loop2:/dev/loop3:/dev/loop4:/dev/loop5:/dev/loop6' 003zimbra@mail:~ $ zmstatctl restart
Source sur le Wiki de Zimbra : Disable Disk Space Monitoring for Loop Devices
J'ajoute cette commande pour complémnent d'information :
Script avec 3 lignes
001zimbra@mail:~ $ zmlocalconfig | grep zmdisklog_ 002zmdisklog_critical_threshold = 95 003zmdisklog_warn_threshold = 85
Par exemple ce type de mail Service mailbox started on mail.domain.com
:
Script avec 1 ligne
001Sep 17 01:19:48 mail zmconfigd[92999]: Service status change: mail.domain.com mailbox changed from stopped to running
Script avec 3 lignes
001su - zimbra 002zimbra@mail:~ $ zmlocalconfig | grep smtp_notify 003smtp_notify = yes
Il faut modifier la valeur smtp_notify
à "no" dans le fichier /opt/zimbra/conf/localconfig.xml
pour quelle soit active après rédémarage de la machine.
Ci-dessous quelques commandes Using Zimbra with strong TLS configuration , Postfix PCI Compilance in Zimbra Collaboration et sur le forum Enabling TLS 1.3, removing v1 and v1.1 and ensuring that only strong ciphers are used
Certains valeurs par default dans Zimbra 8.8.6 :
Script avec 5 lignes
001// Webmail acces if proxy enable 002zimbra@mail:~$ zmprov gcf zimbraReverseProxySSLProtocols 003zimbraReverseProxySSLProtocols: TLSv1 004zimbraReverseProxySSLProtocols: TLSv1.1 005zimbraReverseProxySSLProtocols: TLSv1.2
Script avec 2 lignes
001zimbra@mail:~$ zmprov gcf zimbraMtaSmtpdTlsCiphers 002zimbraMtaSmtpdTlsCiphers: export
Script avec 2 lignes
001zimbra@mail:~$ zmprov gcf zimbraMtaSmtpTlsProtocols 002zimbraMtaSmtpTlsProtocols: !SSLv2, !SSLv3
Script avec 2 lignes
001zimbra@mail:~$ zmprov gcf zimbraMtaSmtpTlsMandatoryProtocols 002zimbraMtaSmtpTlsMandatoryProtocols: !SSLv2, !SSLv3
Script avec 2 lignes
001zimbra@mail:~$ zmprov gcf zimbraMtaSmtpdTlsProtocols 002zimbraMtaSmtpdTlsProtocols: !SSLv2, !SSLv3
Script avec 2 lignes
001zimbra@mail:~$ zmprov gcf zimbraMtaSmtpdTlsMandatoryProtocols 002zimbraMtaSmtpdTlsMandatoryProtocols: !SSLv2, !SSLv3
Script avec 5 lignes
001zimbra@mail:~$ zmprov gcf zimbraMailboxdSSLProtocols 002zimbraMailboxdSSLProtocols: SSLv2Hello 003zimbraMailboxdSSLProtocols: TLSv1 004zimbraMailboxdSSLProtocols: TLSv1.1 005zimbraMailboxdSSLProtocols: TLSv1.2
Script avec 2 lignes
001zimbra@mail:~$ zmprov gcf zimbraMtaTlsAuthOnly 002zimbraMtaTlsAuthOnly: TRUE
Script avec 2 lignes
001zimbra@mail:~$ zmprov gcf zimbraMtaTlsSecurityLevel 002zimbraMtaTlsSecurityLevel: may
Script avec 2 lignes
001zimbra@mail:~$ zmprov gcf zimbraMtaSmtpDnsSupportLevel 002zimbraMtaSmtpDnsSupportLevel: enabled
Script avec 2 lignes
001zimbra@mail:~$ /opt/zimbra/common/bin/openssl ciphers 002TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES256-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:RSA-PSK-AES256-GCM-SHA384:DHE-PSK-AES256-GCM-SHA384:AES256-GCM-SHA384:PSK-AES256-GCM-SHA384:RSA-PSK-AES128-GCM-SHA256:DHE-PSK-AES128-GCM-SHA256:AES128-GCM-SHA256:PSK-AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:ECDHE-PSK-AES256-CBC-SHA384:ECDHE-PSK-AES256-CBC-SHA:SRP-RSA-AES-256-CBC-SHA:SRP-AES-256-CBC-SHA:RSA-PSK-AES256-CBC-SHA384:DHE-PSK-AES256-CBC-SHA384:RSA-PSK-AES256-CBC-SHA:DHE-PSK-AES256-CBC-SHA:AES256-SHA:PSK-AES256-CBC-SHA384:PSK-AES256-CBC-SHA:ECDHE-PSK-AES128-CBC-SHA256:ECDHE-PSK-AES128-CBC-SHA:SRP-RSA-AES-128-CBC-SHA:SRP-AES-128-CBC-SHA:RSA-PSK-AES128-CBC-SHA256:DHE-PSK-AES128-CBC-SHA256:RSA-PSK-AES128-CBC-SHA:DHE-PSK-AES128-CBC-SHA:AES128-SHA:PSK-AES128-CBC-SHA256:PSK-AES128-CBC-SHA
Traduction française du man1 de la commande openssl ciphers
par ici : OpenSSL Ciphers : Outil d'affichage du chiffrement SSL et de liste de chiffrement
_25._tcp.smtp.zw3b.eu
etc.)Script avec 3 lignes
001zimbra@mail:~$ zmprov ms $(zmhostname) zimbraMtaSmtpDnsSupportLevel "dnssec" 002zimbra@mail:~$ zmprov ms $(zmhostname) zimbraMtaSmtpTlsSecurityLevel "dane" 003zimbra@mail:~$ zmmtactl restart
Configuring Zimbra MTA Postfix
Script avec 4 lignes
001zimbra@mail:~$ zmprov mcf zimbraMtaSmtpdTlsCiphers "medium" 002zimbra@mail:~$ zmprov mcf zimbraMtaSmtpdTlsMandatoryCiphers "medium" 003zimbra@mail:~$ zmprov mcf zimbraMtaSmtpdTlsProtocols ">=TLSv1.2" 004zimbra@mail:~$ zmmtactl restart
Script avec 4 lignes
001zimbra@mail:~$ zmprov mcf -zimbraMailboxdSSLProtocols TLSv1 002zimbra@mail:~$ zmprov mcf -zimbraMailboxdSSLProtocols TLSv1.1 003zimbra@mail:~$ zmprov mcf +zimbraMailboxdSSLProtocols TLSv1.3 004zimbra@mail:~$ zmprov mcf +zimbraMailboxdSSLProtocols TLSv1.3
And remove TLS 1.0 and TLSv1.1 from the key name "mailboxd_java_options
" in the file /opt/zimbra/conf/localconfig.xml
Script avec 1 ligne
001zimbra@mail:~$ zmmailboxdctl restart
Script avec 4 lignes
001zimbra@mail:~$ zmprov gcf zimbraPop3CleartextLoginEnabled 002zimbraPop3CleartextLoginEnabled: FALSE 003zimbra@mail:~$ zmprov gcf zimbraReverseProxyPop3StartTlsMode 004zimbraReverseProxyPop3StartTlsMode: only
Script avec 4 lignes
001zimbra@mail:~$ zmprov gcf zimbraImapCleartextLoginEnabled 002zimbraImapCleartextLoginEnabled: FALSE 003zimbra@mail:~$ zmprov gcf zimbraReverseProxyImapStartTlsMode 004zimbraReverseProxyImapStartTlsMode: only
Configuring Zimbra LDAP OpenLDAP
Certaines valeurs par default dans "postfix", le serveur MTA.
Script avec 2 lignes
001zimbra@mail:~$ postconf fast_flush_domains 002fast_flush_domains = $relay_domains
Script avec 2 lignes
001zimbra@mail:~$ postconf smtpd_etrn_restrictions 002smtpd_etrn_restrictions =
Script avec 2 lignes
001zimbra@mail:~$ postconf disable_vrfy_command 002disable_vrfy_command = no
Script avec 2 lignes
001zimbra@mail:~$ postconf tls_medium_cipherlist 002tls_medium_cipherlist = aNULL:-aNULL:HIGH:MEDIUM:+RC4:@STRENGTH
Script avec 2 lignes
001zimbra@mail:~$ postconf tls_preempt_cipherlist 002tls_preempt_cipherlist = no
Configuring Zimbra MTA Postfix
Script avec 4 lignes
001postconf -e smtpd_etrn_restrictions=reject 002postconf -e disable_vrfy_command=yes 003postconf -e tls_medium_cipherlist=$(/opt/zimbra/common/bin/openssl ciphers) 004postconf -e tls_preempt_cipherlist=no
Source : Paramètres de configuration de Postfix : tls_preempt_cipherlist
Avec SSLv3 et versions ultérieures, utilisez l'ordre de préférence de chiffrement du serveur SMTP Postfix au lieu de l'ordre de préférence de chiffrement du client distant.
Par défaut, le serveur OpenSSL sélectionne le chiffrement préféré du client pris en charge par le serveur. Avec SSLv3 et versions ultérieures, le serveur peut choisir son propre chiffrement préféré, pris en charge (proposé) par le client. Le paramètre "tls_preempt_cipherlist = yes" active les préférences de chiffrement du serveur.
Bien que la sélection du chiffrement du serveur puisse dans certains cas conduire à un choix de chiffrement plus sécurisé ou plus performant, il existe un certain risque de problèmes d'interopérabilité. Dans le passé, certains clients SSL ont répertorié des chiffrements de priorité inférieure qu'ils n'avaient pas implémentés correctement. Si le serveur choisit un chiffre que le client préfère moins, il peut sélectionner un chiffre dont l'implémentation client est défectueuse. Plus particulièrement, les serveurs Microsoft Exchange Windows 2003 ont des implémentations défectueuses de DES-CBC3-SHA, qu'OpenSSL considère comme plus puissant que RC4-SHA. L'activation de la sélection de la suite de chiffrement du serveur peut créer des problèmes d'interopérabilité avec les clients Microsoft Exchange Windows 2003.
Cette fonctionnalité est disponible dans Postfix 2.8 et versions ultérieures, en combinaison avec OpenSSL 0.9.7 et versions ultérieures.
J'ajoute ces liens web (ecdh_x25519
/ secp256r1
) : https://stackoverflow.com/questions/75875136/about-use-of-secp256r1-and-x25519 et TLS1.3 - OpenSSLWiki
Et quelque chose de sympa à lire : Paramètres de configuration de Postfix : smtpd_tls_eecdh_grade
Cet article -> TLS Forward Secrecy dans Postfix
J'ajoute cette page Traduction française du man1 d'OpenSSL Ciphers (source ) pour bien comprendre les suites de chiffrements (openssl ciphers
).
Pour infos :
https://wiki.zimbra.com/wiki/Installing_a_LetsEncrypt_SSL_Certificate (Installing a Let's Encrypt SSL Certificate - Certbot)
https://wiki.zimbra.com/wiki/JDunphy-Letsencrypt (Letsencrypt - Using acme.sh to Generate Certs)
https://wiki.zimbra.com/wiki/Multiple_SSL_Certificates,_Server_Name_Indication_(SNI)_for_HTTPS (Multiple SSL Certificates, Server Name Indication (SNI) for HTTPS)
https://blog.zimbra.com/2022/06/zimbra-skillz-how-to-use-zimbra-with-multiple-https-domains-server-name-indication-sni/ (Zimbra SkillZ: How to use Zimbra with multiple HTTPS domains (Server Name Indication))
https://wiki.zimbra.com/wiki/Administration_Console_and_CLI_Certificate_Tools (ZCS Certificates Tools)
...
Le certificat de domaine initial est celui qui est copié dans /opt/zimbra/ssl/zimbra/commercial/commercial.key
et déployé (et renouvelé) -> via /opt/zimbra/bin/zmcertmgr déployercrt comm
.
Les domaines supplémentaires sont déployés (et renouvelés) -> via /opt/zimbra/libexec/zmdomaincertmgr
.
/opt/zimbra/bin/zmcertmgr verifycrtchain
/opt/zimbra/bin/zmcertmgr verifycrt comm
/opt/zimbra/bin/zmcertmgr deploycrt comm
/opt/zimbra/libexec/zmdomaincertmgr savecrt
/opt/zimbra/libexec/zmdomaincertmgr deploycrts
/opt/zimbra/bin/zmcertmgr deployca
Message d'erreur "sur les certificats de domaines suplémentaires" après avoir suivis les tutorials pour déployer multiples certificats de domaines supplémentaires :
/!\ Le certificat du domaine doit être ajouté au certificat CA et la clé privé du domaine ne doit pas être protégée par un mot de passe.
/!\ The domain certificate must be added to the CA certificate and the domain private key must not be password protected.
Cela permet d'avoir une configuration à chaque domaine "client" -> "imap.client_1.com" && "smtp.client_1.com" <- en plus de "imap.my_server.com" et "smtp.my_server.com".
https://forums.zimbra.org/viewtopic.php?t=5160 (SSL certificate for a specific (virtual) domain?)
[TODO] niveau CA.
http://docs.zimbra.com/docs/ne/6.0.8/administration_guide/A_app-command-line.20.21.html
http://docs.zimbra.com/docs/ne/latest/administration_guide/wwhelp/wwhimpl/js/html/wwhelp.htm
Si je pense à des d'autres options ou commandes, je les ajouterais.
Romain