Lewati ke isi

Pengujian

Sebagai bentuk mitigasi risiko saat melakukan pembaruan pada suatu platform. Melakukan pengujian sangatlah penting sebelum pembaruan dilakukan pada peladen produksi.
Berikut adalah hal-hal yang perlu dilakukan pada DigitalOcean:

  1. Membuat snapshot baru
  2. Membuat droplet baru dengan menggunakan snapshot yang baru dibuat
  3. Mengubah nama host saat membuat droplet agar dapat diakses melalui nama domain, sebagai contoh testing-platform.domain.tld
  4. Menyematkan IP baru yang didapatkan pada CloudFlare
  5. Mengakses jarak jauh terhadap droplet yang baru dibuat dengan menggunakan ssh-key sama seperti yang digukanak pada paltform sebelumnya/
  6. Membersihkan atau membuat uland direktori atau path yang sebelumnya digunakan menggunakan tautan simbolik
  7. Mencadangkan berkas konfigurasi pada direktori /home/$USER

Persiapan

vmail

# 
sudo rm /srv/vmail
# 
sudo mkdir -p /srv/vmail
sudo chown -Rv vmail:vmail /srv/vmail

dovecot

sudo nano /etc/dovecot/conf.d/10-mail.conf
#mail_location = maildir:/mnt/vol01-mail/vmail/%d/%n/Maildir
mail_location = maildir:/srv/vmail/%d/%n/Maildir

Instalasi pembaruan Modoboa

Ringkasa pembaruan yang akan dilakukan:

Komponen modoboa 1.9.0 1.10.0 1.13.1
modoboa-amavis 1.1.3 1.2.0 1.2.3
modoboa-dmarc 1.0.1 1.1.0 1.1.0
modoboa-pdfcredentials 1.1.2 1.3.0 1.3.2
modoboa-postfix-autoreply 1.2.1 1.4.0 1.5.1
modoboa-sievefilters 1.1.1 1.4.0 1.4.2
modoboa-stats 1.2.2 1.4.0 1.4.1
modoboa-webmail 1.2.0 1.4.0 1.5.0

Setiap pembaruan akan dilakuakn bertahap

Prosedur standar untuk modoboa dan ekstensi

Pra instalasi

Jalankan perintah-perintah berikut sebelum melakukan pembaruan

#
sudo su - modoboa -s /bin/bash
#
source env/bin/activate

Proses instalasi

Pembaruan perlu ditingkatkan satu versi pada satu waktu, dianjurkan untuk tidak langsung melakukan penginkatan versi yang sinifikan, misalkan dari 1.9.0 langsung ke 1.13.0, baiknya tingkatkan 1.9.0 ke 1.10.0 terlebih dahulu, lalu 1.10.0 ke 1.13.0 dan seterusnya

# pemutakhiran ekstensi Modoboa
pip install <EXTENSION>==<VERSION>
# pemutakniran Modoboa
pip install modoboa==<VERSION>

Pasca instalasi

Pembaruan ekstensi dapat gunakan langkah-lengkah berikut

# Masuk ke dalam virtualenv python
sudo su - modoboa -s /bin/bash
source env/bin/activate
cd instance
# penerapan dan validasi hasil pemutakhiran terhadap instalasi yang ada
python manage.py migrate
python manage.py collectstatic
python manage.py check --deploy
#
exit

Pemutakhiran modoboa & ekstensi 1.9.0 → 1.10.0

Mulai dengan menjalankan virtualenv, tahapan dapat merujuk ke bagian Pra instalasi

settings.py

## Pembaruan pengaturan
# sunting berkas `settings.py` pada direktori `/srv/modoboa/instance/instance`
# 
nano /srv/modoboa/instance/instance/settings.py
# Tambahkan `'modoboa.transport'` pada `MODOBOA_APPS`
MODOBOA_APPS = (
   'modoboa',
   'modoboa.core',
   'modoboa.lib',
   'modoboa.admin',
   'modoboa.transport',
   'modoboa.relaydomains',
   'modoboa.limits',
   'modoboa.parameters',
)
...
# Ubah 
MIDDLEWARE_CLASSES = (
)
# Menjadi
MIDDLEWARE = (
)
...
# import modoboa_amavis_settings
from modoboa_amavis import settings as modoboa_amavis_settings
modoboa_amavis_settings.apply(globals())

ekstensi

pip install modoboa-amavis==1.2.0
# Requirement already satisfied: MarkupSafe>=0.23 in /srv/modoboa/env/lib/python2.7/site-packages (from jinja2->coreschema->coreapi==2.3.3->modoboa>=1.10.0->modoboa-amavis==1.2.0)pip install modoboa-contacts==0.5.0
pip install modoboa-dmarc==1.1.0
# Installing collected packages: modoboa-dmarc
#   Found existing installation: modoboa-dmarc 1.0.1
#     Uninstalling modoboa-dmarc-1.0.1:
#       Successfully uninstalled modoboa-dmarc-1.0.1
# Successfully installed modoboa-dmarc-1.1.0
pip install modoboa-pdfcredentials==1.3.0
# Installing collected packages: modoboa-pdfcredentials
#   Found existing installation: modoboa-pdfcredentials 1.1.2
#     Uninstalling modoboa-pdfcredentials-1.1.2:
#       Successfully uninstalled modoboa-pdfcredentials-1.1.2
# Successfully installed modoboa-pdfcredentials-1.3.0
pip install modoboa-postfix-autoreply==1.4.0
# Installing collected packages: modoboa-postfix-autoreply
#   Found existing installation: modoboa-postfix-autoreply 1.2.1
#     Uninstalling modoboa-postfix-autoreply-1.2.1:
#       Successfully uninstalled modoboa-postfix-autoreply-1.2.1
# Successfully installed modoboa-postfix-autoreply-1.4.0
pip install modoboa-sievefilters==1.4.0
# Installing collected packages: sievelib, modoboa-sievefilters
#   Found existing installation: sievelib 0.9.2
#     Uninstalling sievelib-0.9.2:
#       Successfully uninstalled sievelib-0.9.2
#   Found existing installation: modoboa-sievefilters 1.1.1
#     Uninstalling modoboa-sievefilters-1.1.1:
#       Successfully uninstalled modoboa-sievefilters-1.1.1
# Successfully installed modoboa-sievefilters-1.4.0 sievelib-1.1.1
pip install modoboa-stats==1.4.0
# Installing collected packages: modoboa-stats
#   Found existing installation: modoboa-stats 1.2.2
#     Uninstalling modoboa-stats-1.2.2:
#       Successfully uninstalled modoboa-stats-1.2.2
# Successfully installed modoboa-stats-1.4.0
pip install modoboa-webmail==1.4.0
# Installing collected packages: modoboa-webmail
#   Found existing installation: modoboa-webmail 1.2.0
#     Uninstalling modoboa-webmail-1.2.0:
#       Successfully uninstalled modoboa-webmail-1.2.0
# Successfully installed modoboa-webmail-1.4.0
pip install modoboa==1.10.0
# Installing collected packages: gevent, modoboa
#   Found existing installation: gevent 1.4.0
#     Uninstalling gevent-1.4.0:
#       Successfully uninstalled gevent-1.4.0
#   Found existing installation: modoboa 1.13.1
#     Uninstalling modoboa-1.13.1:
#       Successfully uninstalled modoboa-1.13.1
# Successfully installed gevent-1.2.2 modoboa-1.10.0

postfix map

Setelah selesai melakukan pembaruan Modoboa, kadalang kala perlu dilakukan pemutiakhiran terhadap berkas pemetaan postfix. Perintah-perintah di bawah perlu dijakankkan untuk melakukan hal tersebut.

#
sudo -i
rm /etc/postfix/modoboa-postfix-maps.chk
cd /srv/modoboa
source env/bin/activate
cd instance
python manage.py generate_postfix_maps --force --destdir /etc/postfix
deactivate

Memodifikasi berkas konfigurasi posfix

nano /etc/postfix/main.cf
# smtpd_sender_login_maps =
#  <driver>:<path>/sql-sender-login-map.cf
smtpd_sender_login_maps =
        pgsql:/etc/postfix/sql-sender-login-mailboxes.cf
        pgsql:/etc/postfix/sql-sender-login-aliases.cf
        pgsql:/etc/postfix/sql-sender-login-mailboxes-extra.cf
        pgsql:/etc/postfix/sql-sender-login-map.cf

# transport_maps =
#   <driver>:<path>/sql-transport.cf
#   <driver>:<path>/sql-spliteddomains-transport.cf
transport_maps =
        pgsql:/etc/postfix/sql-transport.cf
        pgsql:/etc/postfix/sql-spliteddomains-transport.cf
        pgsql:/etc/postfix/sql-autoreplies-transport.cf

restart webserver & postfix

/etc/init.d/uwsgi restart
/etc/init.d/postfix restart

DKIM cron

Menambahkan cron untuk membuat menghasilkan kunci DKIM

#
sudo nano /etc/cron.d/modoboa
# Generate DKIM keys (they will belong to the user running this job)
*       *       *       *       *       root    $PYTHON $INSTANCE/manage.py modo manage_dkim_keys

Penerapan perubahan yang sudah dilakukan dapat diselesaikan dengan menjalankan perintah-perintah pada bagian Pasca instalasi

Pemutakhiran 1.10.0 → 1.13.1

setttings.py

Mulai dengan menjalankan virtualenv, tahapan dapat merujuk ke bagian Pra instalasi

## Pembaruan pengaturan
# sunting berkas `settings.py` pada direktori `/srv/modoboa/instance/instance`
# 
nano /srv/modoboa/instance/instance/settings.py
# Tambahkan `modoboa.dnstools`
MODOBOA_APPS = (
   'modoboa',
   'modoboa.core',
   'modoboa.lib',
   'modoboa.admin',
   'modoboa.transport',
   'modoboa.relaydomains',
   'modoboa.limits',
   'modoboa.parameters',
   'modoboa.dnstools',
)
# Tambahkan pengaturan baru ini
CSRF_COOKIE_SECURE = True
SESSION_COOKIE_SECURE = True

simpan lalu keluar dari penyuntingan

ekstensi

pip install modoboa-amavis==1.2.3
# Installing collected packages: gevent, modoboa, modoboa-amavis
#   Found existing installation: gevent 1.2.2
#     Uninstalling gevent-1.2.2:
#       Successfully uninstalled gevent-1.2.2
#   Found existing installation: modoboa 1.10.0
#     Uninstalling modoboa-1.10.0:
#       Successfully uninstalled modoboa-1.10.0
#   Found existing installation: modoboa-amavis 1.2.0
#     Uninstalling modoboa-amavis-1.2.0:
#       Successfully uninstalled modoboa-amavis-1.2.0
# Successfully installed gevent-1.4.0 modoboa-1.13.1 modoboa-amavis-1.2.3
pip install modoboa-pdfcredentials==1.3.2
# Installing collected packages: modoboa-pdfcredentials
#   Found existing installation: modoboa-pdfcredentials 1.3.0
#     Uninstalling modoboa-pdfcredentials-1.3.0:
#       Successfully uninstalled modoboa-pdfcredentials-1.3.0
# Successfully installed modoboa-pdfcredentials-1.3.2
pip install modoboa-postfix-autoreply==1.5.1
# Installing collected packages: django-filter, modoboa-postfix-autoreply
#   Found existing installation: django-filter 1.0.4
#     Uninstalling django-filter-1.0.4:
#       Successfully uninstalled django-filter-1.0.4
#   Found existing installation: modoboa-postfix-autoreply 1.4.0
#     Uninstalling modoboa-postfix-autoreply-1.4.0:
#       Successfully uninstalled modoboa-postfix-autoreply-1.4.0
# Successfully installed django-filter-1.1.0 modoboa-postfix-autoreply-1.5.1
pip install modoboa-sievefilters==1.4.2
# Installing collected packages: modoboa-sievefilters
#   Found existing installation: modoboa-sievefilters 1.4.0
#     Uninstalling modoboa-sievefilters-1.4.0:
#       Successfully uninstalled modoboa-sievefilters-1.4.0
# Successfully installed modoboa-sievefilters-1.4.2
pip install modoboa-stats==1.4.1
# Installing collected packages: modoboa-stats
#   Found existing installation: modoboa-stats 1.4.0
#     Uninstalling modoboa-stats-1.4.0:
#       Successfully uninstalled modoboa-stats-1.4.0
# Successfully installed modoboa-stats-1.4.1
pip install modoboa-webmail==1.5.0
# Installing collected packages: modoboa-webmail
#   Found existing installation: modoboa-webmail 1.4.0
#     Uninstalling modoboa-webmail-1.4.0:
#       Successfully uninstalled modoboa-webmail-1.4.0
# Successfully installed modoboa-webmail-1.5.0
pip install modoboa==1.13.1
#
exit

postfix-autoreply

sudo nano /etc/postfix/main.cf

Hapus baris yang terdapat entrisql-autoreplies-transport.cf pada bagian transport_maps

# transport_maps =
#   <driver>:<path>/sql-transport.cf
#   <driver>:<path>/sql-spliteddomains-transport.cf
transport_maps =
        pgsql:/etc/postfix/sql-transport.cf
        pgsql:/etc/postfix/sql-spliteddomains-transport.cf

restart webserver & postfix

sudo /etc/init.d/uwsgi restart
sudo /etc/init.d/postfix restart

Penerapan perubahan yang sudah dilakukan dapat diselesaikan dengan menjalankan perintah-perintah pada bagian Pasca instalasi

Integrasi dengan Amgal

Skema LDAP pada Modoboa

Name Description Default value
Server address The IP address of the DNS name of the LDAP server localhost
Server port The TCP port number used by the LDAP server 389
Use a secure connection Use an SSL/TLS connection to access the LDAP server no
Authentication method Choose the authentication method to use Direct bind
User DN template (direct bind mode) The template used to construct a user’s DN. It should contain one placeholder (ie. %(user)s)
Bind BN The distinguished name to use when binding to the LDAP server. Leave empty for an anonymous bind
Bind password The password to use when binding to the LDAP server (with ‘Bind DN’)
Search base The distinguished name of the search base
Search filter An optional filter string (e.g. ‘(objectClass=person)’). In order to be valid, it must be enclosed in parentheses. (mail=%(user)s)
Password attribute The attribute used to store user passwords userPassword
Active Directory Tell if the LDAP server is an Active Directory one no
Administrator groups Members of those LDAP Posix groups will be created ad domain administrators. Use ‘;’ characters to separate groups.
Group type The type of group used by your LDAP directory. PosixGroup
Groups search base The distinguished name of the search base used to find groups
Domain/mailbox creation Automatically create a domain and a mailbox when a new user is created just after the first successful authentication. You will generally want to disable this feature when the relay domains extension is in use yes

Rujukan: