Experienced Full Stack Developer for Self-Hosted E-Mail Server Needed

Please login or register as jobseeker to apply for this job.

TYPE OF WORK

Full Time

SALARY

1000

HOURS PER WEEK

40

DATE UPDATED

Nov 6, 2025

JOB OVERVIEW

We’re an experienced US-based team building production-grade AI web apps in business, finance, and productivity. We’re looking for an experienced full stack developer who enjoys taking on responsibility for a wide variety of projects, and who can ship features, fix errors quickly, while also keep systems secure and reliable.

You’ll design, build, and operate a multi-tenant, self-hosted email/CRM MVP centered on listmonk + PostgreSQL, integrating an outbound MTA stack (Postfix or ZoneMTA) with Rspamd, OpenDKIM, and OpenDMARC to ensure deliverability and compliance.

Responsibilities include wiring APIs and a lightweight tenancy gateway, implementing automated domain/IP warm-up and provider-aware throttling, automating DNS (SPF/DKIM/DMARC, tracking CNAMEs) and TLS/ACME, and handling bounce/FBL ingest via webhooks into global/tenant suppressions.

You’ll craft segments (partial SQL), templates (Go templates/MJML pipeline), and the end-to-end send path (render, track, rate-limit), plus a small admin UI for quotas, pools, and health. You’ll setup observability (Prometheus/Grafana/Loki), logs and alerts for bounces/complaints/deferrals, security of keys/secrets, and List-Unsubscribe/one-click compliance. Strong Docker/Compose, Postgres performance, and Go and/or Node for services are expected, along with clear documentation and readiness to troubleshoot deliverability at the ISP/provider level.

We are looking for experienced candidates for this role. If this sounds like a good fit for you, please apply with:

1. Your name and background

2. Links to your related email work (repos, shipped apps, references/case studies)

3. Your availability and hourly rate

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0009
Controller Execution Time ( Jobseekers / Job )  0.0193
Total Execution Time  0.0209
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,489,840 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Experienced-Full-Stack-Developer-for-Self-Hosted-E-Mail-Server-Needed-1507652
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0101 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0003   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1507652
 LIMIT 1 
0.0003   SELECT *
FROM `employers`
WHERE `employer_id` = 623890
 LIMIT 1 
0.0008   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1507652
AND `misc`.`idIS NULL 
0.0004   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-04-19',ej.date_added) duration_daysDATEDIFF('2026-04-19',e.rebill_date) duration_rebillej.*, e.deactivate FROM employers eemployer_jobs ej WHERE e.employer_id ej.employer_id AND
                                   ((
e.user_level >= '500' AND ej.date_added <= e.rebill_date)
                                   OR 
e.employer_id '' OR (ej.date_approved <> '2000-01-01' and DATEDIFF('2026-04-19',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1507652' 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1507652 
0.0020   UPDATE employer_jobs SET hit_counts '***Nov-06-2025=130***Nov-07-2025=6***Nov-08-2025=2***Nov-09-2025=7***Nov-10-2025=3***Nov-11-2025=2***Nov-12-2025=5***Nov-13-2025=3***Nov-14-2025=2***Nov-16-2025=1***Nov-17-2025=2***Nov-18-2025=3***Nov-19-2025=3***Nov-22-2025=2***Nov-23-2025=2***Nov-24-2025=1***Nov-25-2025=1***Nov-26-2025=1***Nov-28-2025=2***Dec-01-2025=3***Dec-02-2025=1***Dec-04-2025=1***Dec-06-2025=1***Dec-07-2025=3***Dec-08-2025=2***Dec-09-2025=2***Dec-10-2025=1***Dec-13-2025=1***Dec-16-2025=1***Dec-17-2025=2***Dec-19-2025=1***Dec-20-2025=1***Dec-23-2025=1***Dec-24-2025=1***Dec-26-2025=1***Dec-27-2025=1***Dec-30-2025=1***Jan-01-2026=1***Jan-02-2026=1***Jan-06-2026=2***Jan-09-2026=1***Jan-12-2026=3***Jan-15-2026=1***Jan-20-2026=1***Jan-24-2026=3***Jan-28-2026=1***Jan-30-2026=1***Feb-01-2026=2***Feb-02-2026=2***Feb-12-2026=2***Feb-13-2026=1***Feb-16-2026=2***Feb-21-2026=1***Feb-22-2026=1***Feb-24-2026=1***Feb-28-2026=1***Mar-04-2026=1***Mar-07-2026=1***Mar-16-2026=1***Mar-18-2026=1***Mar-20-2026=2***Mar-26-2026=2***Mar-27-2026=2***Mar-30-2026=1***Apr-03-2026=1***Apr-05-2026=2***Apr-06-2026=1***Apr-10-2026=1***Apr-19-2026=1' WHERE job_id'1507652'  
0.0007   UPDATE employer_jobs SET monthly_hits '***Nov-2025=178***Dec-2025=25***Jan-2026=15***Feb-2026=13***Mar-2026=11***Apr-2026=6' WHERE job_id'1507652'  
0.0011   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1507652' AND status LIKE 'sent%' ORDER BY id DESC  
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1507652 
0.0019   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '623890'
AND `date_added` >= '2022-06-08' 
0.0003   select from teasers 
0.0013   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)