Lewati ke isi

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: