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:
- Membuat snapshot baru
- Membuat droplet baru dengan menggunakan snapshot yang baru dibuat
- Mengubah nama host saat membuat droplet agar dapat diakses melalui nama domain, sebagai contoh testing-platform.domain.tld
- Menyematkan IP baru yang didapatkan pada CloudFlare
- Mengakses jarak jauh terhadap droplet yang baru dibuat dengan menggunakan ssh-key sama seperti yang digukanak pada paltform sebelumnya/
- Membersihkan atau membuat uland direktori atau path yang sebelumnya digunakan menggunakan tautan simbolik
- 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: