Kotak surel virtual untuk alamat lainnya¶
Penulis kali ini akan membuat satu rangkaian proses untuk penambahan alamat domain sebagai virtual mailbox pada sistem utama hasil instalasi modoboa. Rangkaian langkah ini nanti dapat direplikasi untuk domain-domain lainnya. Berikut ringkasan kegiatannya:
- Tambah domain pada panel admin - Instalasi Modoboa
- Pengaturan DNS - CloudFlare.com
- Enkripsi koneksi SSL/TLS gratis dengan Let’s Encrypt - GetSSL
- Instalasi Nginx sebagai proxy
- Pengaturan alamat webmail perdomain - CLI peladen surel
- Daftar domain, pengguna, dan alias yang akan diimpor - format CSV
- Impor domain & alamat surel - panel admin Modoboa
- Pengumuman akses pengguna dan sandi - MailChimp
Panel administrasi per domain¶
Pengaturan pada settings.py¶
Sunting berkas /srv/modoboa/instance/instance/settings.py
ALLOWED_HOSTS = [
'mail.proxsis.com',
# 'mx1.environment-indonesia.com',
# 'mx1.ibfgi.com',
# 'mx1.ica.training',
# 'mx1.indonesiacorporateacademy.com',
# 'mx1.ipqi.org',
# 'mx1.indonesiaisocenter.com',
# 'mx1.itgid.org',
# 'mx1.indonesiasafetycenter.org',
# 'mx1.oilandgasmanagement.net',
# 'mx1.petrotrainingasia.com',
'mx1.proxsis.com',
'mx1.proxsisgroup.com',
# 'mx1.synergyassurance.com',
'mx1.synergysolusi.com'
]
Web proxy - Nginx¶
cd /etc/nginx/sites-available
cp sub.domain.tld.conf sub1.domain1.tld.conf
sed -i -r 's/sub\.domain\.tld/sub1\.domain1\.tld/1' sub1.domain1.tld.conf
touch /var/log/nginx/sub1.domain1.com-access.log
touch /var/log/nginx/sub1.domain1.com-error.log
ln -s /etc/nginx/sites-available/sub1.domain1.tld /etc/nginx/sites-enabled/sub1.domain1.tld
sudo nginx -t
SSL¶
Self-signed lalu Let’s Encrypt
openssl s_client -connect mail.proxsis.com:25 -starttls smtp
Let’s Encrypt¶
# Instalasi
apt-get install letsencrypt
nano /etc/nginx/sites-available/mx1.proxsis.com.conf
# Salin rekat
location ~ /.well-known {
allow all;
}
mkdir .well-known
chown modoboa:modoboa .well-known
# uji konfigurasi dan jalankan ulang Nginx
nginx -t #ensures your config is accurate and without errors
service nginx restart #restarts the service for nginx
# Menentukan direktori root & membuat kunci dan
letsencrypt certonly -a webroot --webroot-path=/srv/modoboa/instance -d mx1.proxsis.xyz
# Diffie-Hellman
openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
# ubah sesuaikan agar berkas `.well-known` berisi
ssl_certificate /etc/letsencrypt/live/mx1.proxsis.xyz/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mx1.proxsis.xyz/privkey.pem;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
# uji konfigurasi dan jalankan ulang Nginx
nginx -t #ensures your config is accurate and without errors
service nginx restart #restarts the service for nginx
# proses pembaruan kunci ssh secara rutin dengan cron
crontab -e
30 2 * * 1 letsencrypt renew >> /var/log/le-renew.log
35 2 * * 1 service reload nginx
OfflineIMAP¶
# installer.cfg
extensions = modoboa-imap-migration
# /srv/modoboa/instance/instance/settings.py
AUTHENTICATION_BACKENDS = (
'modoboa.lib.authbackends.SimpleBackend',
'modoboa_imap_migration.auth_backends.IMAPBackend',
)
# /etc/cron.d/modoboa
PYTHON=/srv/modoboa/env/bin/python
INSTANCE=/srv/modoboa/instance
0 */1 * * * vmail cd /srv/vmail && $PYTHON $INSTANCE/manage.py generate_offlineimap_config --output .offlineimaprc && /usr/local/bin/offlineimap > /dev/null 2>&1
# nano ~/.offlineimap.py
import os
import site
import sys
site.addsitedir("/srv/modoboa/env/lib/python2.7/site-packages")
sys.path.append("/srv/modoboa/instance")
os.environ["DJANGO_SETTINGS_MODULE"] = "instance.settings"
import django
django.setup()
from modoboa_imap_migration.models import Migration
def get_user_password(username):
"""Retrieve a password from Modoboa's database."""
return Migration.objects.select_related().get(
mailbox__user__username=username
).password
sudo cp ~/.offlineimap.py /srv/vmail
sudo chown vmail:vmail /srv/vmail/.offlineimap.py
Rujukan: