Tampilan
Alur Pengiriman Email
Poin kunci
Backend ATE tidak mengirim email transaksional pelanggan secara langsung. Ia hanya melakukan provisioning (membuat relay account Zimbra, mendaftarkan domain ke ZoneMTA, menerbitkan API token). Pengiriman aktual dilakukan oleh ZoneMTA dan/atau Zimbra.
Dua jalur pengiriman pelanggan
| Jalur | Cara | Untuk siapa |
|---|---|---|
| SMTP relay | Mail server pelanggan (Zimbra) relay via relay.aktiva.co.id:587 | Pelanggan dengan mail server sendiri |
| HTTP API | POST ke ZMTA_SEND_EMAIL_ENDPOINT dengan Authorization: Bearer <token> | Pengiriman programatik |
Onboarding sampai bisa mengirim (end-to-end)
Langkah detail
Checkout (
POST /api/v1/billings/checkout) — bila domain diberikan:- Buat relay account Zimbra (
relay.{domain}@infokreasindo.net, status awalclosed). - Simpan ke
TransCompanyAccountRelays(email tampilan@aktiva.co.id). - Buat record domain (dengan pengecekan DNS).
- File:
controllers/biliings/checkoutServicePackages/.
- Buat relay account Zimbra (
Pembayaran (callback Xendit,
POST /api/v1/callback-payment) — aktifkan langganan, buat/aktifkan relay Zimbra, update file.cfpaket.Aktivasi relay (
activingAccountRelay):- Set status akun Zimbra →
active. - Tambahkan regex relay ke file paket (
documents/{PackageName}.cf). - Update
listdomain.txt,bysender,slm-exceptions-dbviahelpers/fileConfig.helper.js.
- Set status akun Zimbra →
Generate API token (
POST /api/v1/companies/email-api-token):controllers/company/generateEmailApiToken/.- Memanggil
zmtaHelper.generateToken(companyUuid, userUuid). - Mendaftarkan semua domain company ke ZoneMTA beserta batas ukuran attachment.
Ambil kredensial (
GET /api/v1/companies/email-api-token):- Mengembalikan
{ apiEndpoint: ZMTA_SEND_EMAIL_ENDPOINT, token, status, ... }.
- Mengembalikan
Opsional — setup script Zimbra (
GET /api/v1/companies/generate-setup-script):- Membuat
setup-zimbra.shberisi akun/password relay & domain. - Pelanggan menjalankannya di server Zimbra mereka untuk mengkonfigurasi relay outbound.
- Membuat
Siklus hidup relay account (Zimbra)
| Event | Aksi Zimbra | File |
|---|---|---|
| Checkout | Buat akun (closed) | checkoutServicePackagesController.js |
| Aktivasi relay | Status → active, append .cf | activingAccountRelayService.js |
| Kuota 100% | Status → closed, relay suspended | controllers/callbackRawLog.js, sparkpostService.js |
| Pembayaran diterima | Status → active | controllers/callbackXendit.js |
| Ganti password | zimbraSetPassword | admin changePasswordRelay |
| Housekeeping | Hapus akun suspended >1 bulan | cron/job-relay-account-housekeeping.js |
Kredensial relay disimpan di TransCompanyAccountRelays: zimbraUserId, email, password, status.
Penggunaan email-api-token
| Route | File | Aksi |
|---|---|---|
POST .../email-api-token | controllers/company/generateEmailApiToken/ | Generate token + register domain di ZMTA |
GET .../email-api-token | controllers/company/getEmailApiToken/ | Kembalikan token + ZMTA_SEND_EMAIL_ENDPOINT |
PATCH .../email-api-token | controllers/company/renewEmailApiToken/ | Regenerasi token via zmtaHelper.regenerateToken |
TIP
Token dikelola oleh plugin API ZoneMTA, bukan disimpan di database aplikasi ini. Helper integrasinya ada di helpers/zone-mta.helper.js (Referensi Integrasi).