A nyílt forrású Zimbra Collaboration Server egy Exchange-kompatibilis e-mail és kollaborációs platform fejlett webes klienssel és mobiltelefonos szinkronizáció lehetőségével. A bejegyzésben lépésről-lépésre megtanítalak hogyan alakítsd ki a saját környezetedet. A rendszer alapját Ubuntu 18.04 szerver adja.
Előkészületek
Ennek a cikknek az írásához a forrás anyag innen származik, némi módosítással. A legfontosabb teendőnk, hogy a Domain szolgáltatónál állítsuk be a Domainünk „A” rekordját, ami a szerverünk – vagy routerünk – publikus IP címére mutat. Illetve hozzunk még egy „A” rekordot létre, mail.domain.pelda néven az előző IP címre. Még egy bejegyzés szükséges, mégpedig „MX” rekordkét állítsuk be a korábbi mail.domain.pelda nevünket. Nálam így néz ki.
DOMAIN SZOLGÁLTATÓ:
zsoltina.eu | A | 37.191.57.95 |
zsoltina.eu | MX | mail.zsoltina.eu |
mail.zsoltina.eu | A | 37.191.57.95 |
ROUTER MÖGÜL:
zsoltina.eu | A | 37.191.57.95 |
zsoltina.eu | MX | mail.zsoltina.eu |
mail.zsoltina.eu | A | 172.16.5.100 |
A router mögül azért látszik a belső címe a szervernek, mert nálam ez az eszköz adja a DNS szolgáltatást is, és itt statikusan a mail.zsoltina.eu névhez hozzárendeltem a 172.16.5.100 címet. Így a belső hálüzaton a resolver ezt a címet adja vissza. Továbbá a szerveren be kell még állítanunk a /etc/hosts és /etc/hostname konfigurációs állományokat. Az alábbi példa szerint:
zimbra@mail:/home/berti$ cat /etc/hosts 127.0.0.1 localhost.localadmin localhost 172.16.5.100 mail.zsoltina.eu mail
zimbra@mail:/home/berti$ cat /etc/hostname mail
Ezek a lépések azért kellenek, mert a Zimbra telepítéskor megnézi, hogy a megadott domain névhez milyen MX rekord tartozik. Ha a telepítendő szerver neve és IP címe nem egyezik meg a lekérdezés folyamán, akkor az hibát okoz a telepítés alatt. Ha nem olyan a routerünk, amin ezt a trükköt tudnánk alkalmazni, a szerverünkön telepíteni kell például a DNSMasq szolgáltatást és ott átkonfigurálni a mail.damain.pelda beállítást. Itt egy script, ami ezt megoldja:
cd /tmp && nano dnsmasq.sh
Illeszd be az alábbi tartalmat:
#!/bin/bash -x # DNSMasq server installation in Ubuntu 18.04 # Author: Ványi Albert # Check if running as root if [ "$(id -u)" != "0" ]; then echo "This script must be run as root" 1>&2 exit 1 fi ##Install a DNS Server with DNSMasq sudo apt-get update && sudo apt-get install -y dnsmasq echo "Installing Bind DNSMasq Server" sudo systemctl stop dnsmasq && systemctl disable systemd-resolved && systemctl stop systemd-resolved mv /etc/dnsmasq.conf /etc/dnsmasq.conf.BKP && rm /etc/resolv.conf cat <<EOF >>/etc/dnsmasq.conf port=53 server=$2 domain=$1 mx-host=$1, mail.$1, 5 mx-host=mail.$1, mail.$1, 5 listen-address=127.0.0.1 EOF cat <<EOF >>/etc/resolv.conf nameserver 127.0.0.1 nameserver 8.8.8.8 nameserver 8.8.4.4 EOF sudo systemctl start dnsmasq echo "DNSMasq installed your system"
Tegyük futtathatóvá:
chmod +x dnsmasq.sh
A script futtatása esetén a domain nevet és ip címet parancssori argomentumként adjuk meg:
./dnsmasq.sh zsoltina.eu 172.16.5.100
Időzóna és rendszeridő beállítása:
dpkg-reconfigure tzdata
Mielőtt az ntp daemont telepítenénk ellenőrizzük le, hogy az időszinkronizálás – System clock synchronized – ki van-e kapcsolva. Nálam mint látható ki volt kapcsova:
root@mail:/opt/zimbra/backup# timedatectl Local time: h 2019-12-30 08:05:36 CET Universal time: h 2019-12-30 07:05:36 UTC RTC time: h 2019-12-30 07:05:36 Time zone: Europe/Budapest (CET, +0100) System clock synchronized: no systemd-timesyncd.service active: yes RTC in local TZ: no
Ha be van kapcsolva, akkor az alábbi paranccsal tudjuk kikapcsolni:
timedatectl set-ntp no
Majd telepítsük az ntp-t:
apt install ntp
Időszinkron ellenőrzése az ntpq -p paranccsal:
root@mail:/opt/zimbra/backup# ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== 0.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000 1.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000 2.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000 3.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000 ntp.ubuntu.com .POOL. 16 p - 64 0 0.000 0.000 0.000 bakacsin1.ki.ii 195.111.107.122 2 u 1 64 1 18.406 0.320 0.000 golem.canonical 17.253.34.125 2 u 1 64 1 39.541 -0.057 0.000
Zimbra telepítése
Elérkeztünk a telepítéshez, amit két módon tehetünk meg.
Első módszer:
Letöltjük a Zimbra aktuális verzióját és manuálisan telepítjük:
cd /tmp wget https://files.zimbra.com/downloads/8.8.15_GA/zcs-8.8.15_GA_3869.UBUNTU18_64.20190918004220.tgz tar xzvf zcs-* cd /tmp/zcs/zcs-8.8.15_GA_3869.UBUNTU18_64.20190918004220 && ./install.sh
Második módszer:
Automatizált telepítést hajtunk végre, ez esetben lépjünk a „/tmp” könyvtárba és hozzuk létre a következő scriptet:
cd /tmp && nano zimbra.sh
Illesszük be az alábbi tartlmat:
#!/bin/bash -x # Zimbra mail server installation in Ubuntu 18.04 # Author: Ványi Albert # Check if running as root if [ "$(id -u)" != "0" ]; then echo "This script must be run as root" 1>&2 exit 1 fi ## Preparing all the variables like IP, Hostname, etc, all of them from the server RANDOMHAM=$(date +%s|sha256sum|base64|head -c 10) RANDOMSPAM=$(date +%s|sha256sum|base64|head -c 10) RANDOMVIRUS=$(date +%s|sha256sum|base64|head -c 10) HOSTNAME=$(hostname -s) ##Preparing the config files to inject echo "Creating the Scripts files" mkdir /tmp/zcs && cd /tmp/zcs touch /tmp/zcs/installZimbraScript cat <<EOF >/tmp/zcs/installZimbraScript AVDOMAIN="$1" AVUSER="admin@$1" CREATEADMIN="admin@$1" CREATEADMINPASS="$3" CREATEDOMAIN="$1" DOCREATEADMIN="yes" DOCREATEDOMAIN="yes" DOTRAINSA="yes" EXPANDMENU="no" HOSTNAME="$HOSTNAME.$1" HTTPPORT="8080" HTTPPROXY="TRUE" HTTPPROXYPORT="80" HTTPSPORT="8443" HTTPSPROXYPORT="443" IMAPPORT="7143" IMAPPROXYPORT="143" IMAPSSLPORT="7993" IMAPSSLPROXYPORT="993" INSTALL_WEBAPPS="service zimlet zimbra zimbraAdmin" JAVAHOME="/opt/zimbra/common/lib/jvm/java" LDAPAMAVISPASS="$3" LDAPPOSTPASS="$3" LDAPROOTPASS="$3" LDAPADMINPASS="$3" LDAPREPPASS="$3" LDAPBESSEARCHSET="set" LDAPDEFAULTSLOADED="1" LDAPHOST="$HOSTNAME.$1" LDAPPORT="389" LDAPREPLICATIONTYPE="master" LDAPSERVERID="2" MAILBOXDMEMORY="512" MAILPROXY="TRUE" MODE="https" MYSQLMEMORYPERCENT="30" POPPORT="7110" POPPROXYPORT="110" POPSSLPORT="7995" POPSSLPROXYPORT="995" PROXYMODE="https" REMOVE="no" RUNARCHIVING="no" RUNAV="yes" RUNCBPOLICYD="no" RUNDKIM="yes" RUNSA="yes" RUNVMHA="no" SERVICEWEBAPP="yes" SMTPDEST="admin@$1" SMTPHOST="$HOSTNAME.$1" SMTPNOTIFY="yes" SMTPSOURCE="admin@$1" SNMPNOTIFY="yes" SNMPTRAPHOST="$HOSTNAME.$1" SPELLURL="http://$HOSTNAME.$1:7780/aspell.php" STARTSERVERS="yes" SYSTEMMEMORY="3.8" TRAINSAHAM="ham.$RANDOMHAM@$1" TRAINSASPAM="spam.$RANDOMSPAM@$1" UIWEBAPPS="yes" UPGRADE="yes" USEKBSHORTCUTS="TRUE" USESPELL="yes" VERSIONUPDATECHECKS="TRUE" VIRUSQUARANTINE="virus-quarantine.$RANDOMVIRUS@$1" ZIMBRA_REQ_SECURITY="yes" ldap_bes_searcher_password="$3" ldap_dit_base_dn_config="cn=zimbra" ldap_nginx_password="$3" ldap_url="ldap://$HOSTNAME.$1:389" mailboxd_directory="/opt/zimbra/mailboxd" mailboxd_keystore="/opt/zimbra/mailboxd/etc/keystore" mailboxd_keystore_password="$3" mailboxd_server="jetty" mailboxd_truststore="/opt/zimbra/common/lib/jvm/openjdk-13.0.1-zimbra/lib/security/cacerts" mailboxd_truststore_password="changeit" postfix_mail_owner="postfix" postfix_setgid_group="postdrop" ssl_default_digest="sha256" zimbraDNSMasterIP="" zimbraDNSTCPUpstream="no" zimbraDNSUseTCP="yes" zimbraDNSUseUDP="yes" zimbraDefaultDomainName="$1" zimbraFeatureBriefcasesEnabled="Enabled" zimbraFeatureTasksEnabled="Enabled" zimbraIPMode="ipv4" zimbraMailProxy="FALSE" zimbraMtaMyNetworks="127.0.0.0/8 $2/32 [::1]/128 [fe80::]/64" zimbraPrefTimeZoneId="Europe/Budapest" zimbraReverseProxyLookupTarget="TRUE" zimbraVersionCheckInterval="1d" zimbraVersionCheckNotificationEmail="admin@$1" zimbraVersionCheckNotificationEmailFrom="admin@$1" zimbraVersionCheckSendNotifications="TRUE" zimbraWebProxy="FALSE" zimbra_ldap_userdn="uid=zimbra,cn=admins,cn=zimbra" zimbra_require_interprocess_security="1" zimbra_server_hostname="$HOSTNAME.$1" INSTALL_PACKAGES="zimbra-core zimbra-ldap zimbra-logger zimbra-mta zimbra-snmp zimbra-store zimbra-apache zimbra-spell zimbra-memcached zimbra-proxy" EOF touch /tmp/zcs/installZimbra-keystrokes cat <<EOF >/tmp/zcs/installZimbra-keystrokes y y y y y n y y y y y y y n y y EOF ## Install Zimbra Mail Server if [[ `lsb_release -rs` == "18.04" ]]; then echo "Downloading Zimbra Collaboration 8.8.15 for Ubuntu 18.04" wget https://files.zimbra.com/downloads/8.8.15_GA/zcs-8.8.15_GA_3869.UBUNTU18_64.20190918004220.tgz tar xzvf zcs-* echo "Installing Zimbra Collaboration just the Software" cd /tmp/zcs/zcs-8.8.15_GA_3869.UBUNTU18_64.20190918004220 && ./install.sh -s < /tmp/zcs/installZimbra-keystrokes echo "Installing Zimbra Collaboration injecting the configuration" /opt/zimbra/libexec/zmsetup.pl -c /tmp/zcs/installZimbraScript fi ## Restart Zimbra su - zimbra -c 'zmcontrol restart' ## Add Crontab for server autostart at startup or reboot cat <(crontab -l) <(echo "@reboot su - zimbra -c 'zmcontrol start'") | crontab - echo "You can access now to your Zimbra Collaboration Server" echo "Admin Console: https://"$2":7071" echo "Web Client: https://"$2
Kapjon futtatási jogot és futtassuk:
sudo chmod +x zimbra.sh && /bin/bash /tmp/zimbra.sh zsoltina.eu 172.16.5.100 Passw@rd
Parancssori argomentumok:
- Domain név: zsoltina.eu
- Locális IP: 172.16.5.100
- Admin jelszó: Passw@rd
A telepítés befejezése után a következő felületek állnak rendelkezésre:
- Web Kliens: https://mail.zsoltina.eu
- Adminisztráció: https://mail.zsoltina.eu:7071
Külső hozzáférés esetén, a következő TCP portokat kell elérhetővé tenni a szerveren:
SMTP | 25 |
HTTP | 80 |
POP3 | 110 |
IMAP | 143 |
HTTPS | 443 |
SMTPS | 465 |
SUBMISSION | 587 |
IMAPS | 993 |
POP3S | 995 |
Let’s Encrypt tanúsítvány
Célszerű a szerverünket az ingyenes Let’s Encrypt tanúsítvány hatóság által biztosított tanúsítvánnyal használni. Ennek a beállítására szintén készítettem egy scriptet. Lépjünk a „/tmp” könyvtárba és váltsunk root felhasználóra. Hozzuk létre a következő scriptet:
touch /tmp/zimbra-ssl.sh && chmod +x /tmp/zimbra-ssl.sh
Illesszük be az alábbi tartalmat, azonban arra vigyázzunk, hogy a `zmhostname` részt néha hibásan generálja a script és utasításként próbál lefutni. Érdemes lehet ezt a részt leválasztani és külön script-ként futtatni:
#!/bin/bash # SSL certificate installation in Zimbra # with SSL certificate provided by Let's Encrypt (letsencrypt.org) # Author: Ványi Albert # Check if running as root if [ "$(id -u)" != "0" ]; then echo "This script must be run as root" 1>&2 exit 1 fi read -p 'letsencrypt_email [xx@xx.xx]: ' letsencrypt_email read -p 'mail_server_url [xx.xx.xx]: ' mail_server_url # Check All variable have a value if [ -z $mail_server_url ] || [ -z $letsencrypt_email ] then echo run script again please insert all value. do not miss any value else # Installation start # Stop the jetty or nginx service at Zimbra level su - zimbra -c 'zmproxyctl stop' su - zimbra -c 'zmmailboxdctl stop' # Install git and letsencrypt cd /opt/ apt-get install git -y git clone https://github.com/letsencrypt/letsencrypt cd letsencrypt # Get SSL certificate ./letsencrypt-auto certonly --standalone --non-interactive --agree-tos --email $letsencrypt_email -d $mail_server_url --hsts cd /etc/letsencrypt/live/$mail_server_url cat <<EOF >>chain.pem -----BEGIN CERTIFICATE----- MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/ MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw 7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69 ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5 JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ -----END CERTIFICATE----- EOF # Verify commercial certificate mkdir /opt/zimbra/ssl/letsencrypt cp /etc/letsencrypt/live/$mail_server_url/* /opt/zimbra/ssl/letsencrypt/ chown zimbra:zimbra /opt/zimbra/ssl/letsencrypt/* ls -la /opt/zimbra/ssl/letsencrypt/ su - zimbra -c 'cd /opt/zimbra/ssl/letsencrypt/ && /opt/zimbra/bin/zmcertmgr verifycrt comm privkey.pem cert.pem chain.pem' # Deploy the new Let's Encrypt SSL certificate cp -a /opt/zimbra/ssl/zimbra /opt/zimbra/ssl/zimbra.$(date "+%Y%m%d") cp /opt/zimbra/ssl/letsencrypt/privkey.pem /opt/zimbra/ssl/zimbra/commercial/commercial.key sudo chown zimbra:zimbra /opt/zimbra/ssl/zimbra/commercial/commercial.key su - zimbra -c 'cd /opt/zimbra/ssl/letsencrypt/ && /opt/zimbra/bin/zmcertmgr deploycrt comm cert.pem chain.pem' # setting auto https redirect cd /opt && touch https-redirect.sh && chown zimbra:zimbra https-redirect.sh && chmod +x https-redirect.sh cat <<EOF >>/opt/https-redirect.sh zmlocalconfig -e ldap_starttls_supported=1 zmlocalconfig -e zimbra_require_interprocess_security=1 zmlocalconfig -e ldap_starttls_required=true zmprov ms `zmhostname` zimbraReverseProxyMailMode redirect zmprov ms `zmhostname` zimbraMailMode https zmprov ms `zmhostname` zimbraReverseProxySSLToUpstreamEnabled TRUE zmprov ms `zmhostname` zimbraMailClearTextPasswordEnabled FALSE zmprov ms `zmhostname` zimbraImapCleartextLoginEnabled FALSE zmprov gs `zmhostname` zimbraReverseProxyImapStartTlsMode only zmprov ms `zmhostname` zimbraPop3CleartextLoginEnabled FALSE zmprov gs `zmhostname` zimbraReverseProxyPop3StartTlsMode only zmprov ms `zmhostname` zimbraMtaTlsAuthOnly TRUE zmlocalconfig -e postfix_smtp_tls_security_level=may zmprov ms `zmhostname` zimbraMtaTlsSecurityLevel may zmprov gs `zmhostname` zimbraAuthLdapStartTlsEnabled TRUE EOF su - zimbra -c '/opt/https-redirect.sh' rm /opt/https-redirect.sh # Restart Zimbra su - zimbra -c 'zmcontrol restart' fi
Tanúsítvány megújítása
A Let’s Encrypt tanúsítványokat időről-időre meg kell újítanunk. Ehhez a következő scrptet készítettem. Lépjünk a „/tmp” könyvtárba és hozzuk létre a scriptet root felhasználóként:
cd /tmp && touch zimbra-ssl-renew.sh && chmod +x zimbra-ssl-renew.sh && nano zimbra-ssl-renew.sh
Illesszük be az alábbi tartalmat:
#!/bin/bash # Renew SSL certificate in Zimbra # with SSL certificate provided by Let's Encrypt (letsencrypt.org) # Author: Ványi Albert # Check if running as root if [ "$(id -u)" != "0" ]; then echo "This script must be run as root" 1>&2 exit 1 fi read -p 'letsencrypt_email [xx@xx.xx]: ' letsencrypt_email read -p 'mail_server_url [xx.xx.xx]: ' mail_server_url # Check All variable have a value if [ -z $mail_server_url ] || [ -z $letsencrypt_email ] then echo run script again please insert all value. do not miss any value else # Installation start # Stop the jetty or nginx service at Zimbra level su - zimbra -c 'zmproxyctl stop' su - zimbra -c 'zmmailboxdctl stop' # Renew SSL cd /opt/letsencrypt # Get SSL certificate ./letsencrypt-auto certonly --standalone --non-interactive --agree-tos --email $letsencrypt_email -d $mail_server_url --hsts cd /etc/letsencrypt/live/$mail_server_url cat <<EOF >>chain.pem -----BEGIN CERTIFICATE----- MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/ MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw 7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69 ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5 JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ -----END CERTIFICATE----- EOF # Verify commercial certificate mkdir /opt/zimbra/ssl/letsencrypt cp /etc/letsencrypt/live/$mail_server_url/* /opt/zimbra/ssl/letsencrypt/ chown zimbra:zimbra /opt/zimbra/ssl/letsencrypt/* ls -la /opt/zimbra/ssl/letsencrypt/ su - zimbra -c 'cd /opt/zimbra/ssl/letsencrypt/ && /opt/zimbra/bin/zmcertmgr verifycrt comm privkey.pem cert.pem chain.pem' # Deploy the new Let's Encrypt SSL certificate cp -a /opt/zimbra/ssl/zimbra /opt/zimbra/ssl/zimbra.$(date "+%Y%m%d") cp /opt/zimbra/ssl/letsencrypt/privkey.pem /opt/zimbra/ssl/zimbra/commercial/commercial.key sudo chown zimbra:zimbra /opt/zimbra/ssl/zimbra/commercial/commercial.key su - zimbra -c 'cd /opt/zimbra/ssl/letsencrypt/ && /opt/zimbra/bin/zmcertmgr deploycrt comm cert.pem chain.pem' # Restart Zimbra su - zimbra -c 'zmproxyctl start' su - zimbra -c 'zmmailboxdctl start' fi
Backup
A rendszerünkről nem árt időről-időre biztonsági mentést készíteni. Ehhez szintén készítettem egy scriptet:
cd /tmp && touch zimbra-backup.sh && chmod +x zimbra-backup.sh && nano zimbra-backup.sh
#!/bin/bash ################################################ # Zimbra backup script for open source edition # ################################################ ZIMBRA_HOME=/opt/zimbra ZIMBRA_BIN=$ZIMBRA_HOME/bin ZIMBRA_BACKUP_DIR=$ZIMBRA_HOME/backup BACKUP_DATE=`date +%G-%m-%d_%H-%M` # set default option is 0 (unset) VERBOSE=0 log() { # verbose option is turn on if [ $VERBOSE -eq 1 ]; then echo $1 fi } usage() { cat << EOF zmbackup: zmbackup [-o path] -a|-u mailbox EOF } backup_mailbox() { mbox=$1 log "start backup mailbox $mbox" if [ ! -z $2 ]; then $ZIMBRA_BIN/zmmailbox -z -m $mbox getRestURL "//?fmt=tgz" > $ZIMBRA_BACKUP_DIR/$2/$mbox-$BACKUP_DATE.tgz log "backup mailbox $mbox successful" log "backup to $ZIMBRA_BACKUP_DIR/$2" else $ZIMBRA_BIN/zmmailbox -z -m $mbox getRestURL "//?fmt=tgz" > $ZIMBRA_BACKUP_DIR/$mbox-$BACKUP_DATE.tgz log "backup mailbox $mbox successful" log "backup to $ZIMBRA_BACKUP_DIR" fi } create_pack_backup() { log "search domain" domains=`$ZIMBRA_BIN/zmprov gad` for domain in $domains; do log "start backup domain $domain" # get all accounts from domain mboxs=`$ZIMBRA_BIN/zmprov -l gaa $domain` # check directory if -o is set mkdir -p $ZIMBRA_BACKUP_DIR/$domain # fetch account in tgz format for mbox in $mboxs; do # $ZIMBRA_BIN/zmmailbox -z -m $mbox getRestURL "//?fmt=tgz" > $ZIMBRA_BACKUP_DIR/$domain/$mbox-$BACKUP_DATE.tgz backup_mailbox $mbox $domain done # pack mailbox in domain cd $ZIMBRA_BACKUP_DIR/$domain tar czf $domain-$BACKUP_DATE.tgz `ls` mv $domain-$BACKUP_DATE.tgz $ZIMBRA_BACKUP_DIR cd $ZIMBRA_BACKUP_DIR rm -rf $ZIMBRA_BACKUP_DIR/$domain log "backup domain $domain successful" done } # Option # zmbackup [-ah] [-u mailbox] [-o path] while getopts :aho:u:v OPTION; do case $OPTION in a ) AFLAG=1 ;; h ) usage ;; o ) if [ -z $OPTARG ]; then echo "-o option must specific path" exit 1 else ZIMBRA_BACKUP_DIR=${OPTARG:0:${#OPTARG}-1} # substring from 0 to strlen - 1 fi ;; u ) if [ -z $OPTARG ]; then echo "-u option must specific mailbox" else UFLAG=$OPTARG fi ;; v ) VERBOSE=1 ;; # other option doesn't match * ) usage exit 1 ;; esac done # if not specific -a or -u it error and exit the script if [ -z $UFLAG ] && [[ $AFLAG -ne 1 ]]; then echo "you must specific -a or -u option" exit 1 fi # if UFLAG has value but AFLAG is used if [ ! -z $UFLAG ] && [[ $AFLAG -eq 1 ]]; then echo "use -a or -u" exit 1 # if declare UFLAG elif [ ! -z $UFLAG ]; then backup_mailbox $UFLAG fi # if AFLAG on if [[ $AFLAG -eq 1 ]]; then create_pack_backup fi
A scriptet két módon tudjuk futtatni:
- -a: Teljes rendszermentés, pl: /bin/bash /tmp/zimbra-backup.sh -a
- -u: Egy adott felhasználó levelezéseinek mentése pl: /bin/bash /tmp/zimbra-backup.sh -u admin@zsoltina.eu
A biztonsági mentések a „/opt/zimbra/backup” könyvtárba kerülnek.
Zimbra Drive
Amennyiben rendelkezünk Nextcloud szolgáltatással, nagyon hasznos lehetőség, ha a Zimbra számára hozzáférést biztosítunk a felhő alapú tárhelyünkhöz. A gyakorlatban ez azt jelenti, hogy a Zimbra hozzáfér a Nextcloud tárhelyünkhöz és a Zimbra felhasználóinak automatikusan létrehoz egy fiókot. Így a Zimbra felhasználóinak lehetősége van itt tárolni nagy méretű állományokat, melyeket email küldés esetén mellékelhetnek a címzett számára. A használathoz össze kell párosítani a két szolgáltatásunkat.
Zimbra szerver:
A Zimbrát futtató szerveren váltsunk zimbra felhasználóra:
sudo -s # root felhasznlóra váltás su zimbra
Majd párosítsuk össze a nextcloud elérhetőségünket a zimbra adott tartományával, melynek hozzáférést akarunk biztosítani a nextcloud tárhelyhez:
zmprov md zsoltina.eu zimbraDriveOwnCloudURL https://zsoltina.asuscomm.com/index.php
Szükségünk lesz egy kulcsra a kapcsolat felépítéséhez:
zmprov getDomain zsoltina.eu zimbraPreAuthKey zmprov generateDomainPreAuthKey zsoltina.eu
Ekkor legenerálódik az api kulcs, valami hasonlót fogunk látni, persze csillagok nélkül:
preAuthKey: 06**********af**********b005eaea4ab1**********4bf1e**********75
Nextcloud szerver:
A nextcloud szerveren adminisztrátori joggal rendelkező fiókkal lépjünk be, majd az alkalmazások között válasszuk ki és telepítsük a Zimbra Drive-t. Majd lépjünk a beállításokra, itt válasszuk a Zimbra Drive-ot. Töltsük ki az űrlapot:
X Enable Zimbra Authentication back end X Allow Zimbra's users to log in Zimbra Server: mail.zsoltina.eu Zimbra port: 443 X Use SSL X Enable Certification verification Domain Preauth key: < Üresen hagyni > X Set Zimbra Group to users
Amennyiben a Test Page gombra kattintunk, helyes működés esetén az alábbi üzenetet kell látnunk:
[OK] Zimbra Drive app installation test : Zimbra Drive app is installed. [OK] Enabled Zimbra's users test : Zimbra's users are enabled. [OK] Enabled Zimbra's user login : Zimbra Drive authentication is enabled. [OK] Is server url set test : The server url is set. [OK] Is server port set test : The server port is set. [OK] Zimbra host connection test : Zimbra Drive app can reach the host. [OK] Zimbra authentication page connection test : Zimbra Drive app can reach Zimbra's authentication page. [OK] Zimbra Drive extension connection test : Zimbra Drive app can reach Zimbra Drive extension.
DKIM beállítása
DKIM Domain-hez adása:
su - zimbra -c "/opt/zimbra/libexec/zmdkimkeyutil -a -d zsoltina.eu"
A parancs hatására beállításra kerül a DKIM titkos kulcsa, illetve a rendszer kiírja a Domain szolgáltatónál beállításra ajánlott konfigurációt.
DKIM beállítás részletei:
su - zimbra -c "/opt/zimbra/libexec/zmdkimkeyutil -q -d zsoltina.eu"
DKIM eltávolítása:
su - zimbra -c "/opt/zimbra/libexec/zmdkimkeyutil -r -d zsoltina.eu"
DKIM Frissítés (Update)
su - zimbra -c "/opt/zimbra/libexec/zmdkimkeyutil -u -d zsoltina.eu"
További részletek itt.
Konklúzió
Ezzel elkészültünk a szolgáltatás konfigurálásával. Outlook-al való használathoz szükség lesz a Zimbra Connector for Outlook kiegészítőre, melyet innen tudsz letölteni.