The Best Price for IPv4/IPv6 Lease – Any RIR & Any Geo-LocationOrder Now
Hostperl

Setup Exim Mail Server on Ubuntu VPS: Complete SMTP Configuration

By Raman Kumar

Share:

Updated on Jun 3, 2026

Setup Exim Mail Server on Ubuntu VPS: Complete SMTP Configuration

Installing Exim on Your Ubuntu VPS

Exim offers a lightweight alternative to Postfix for hosting providers who need reliable mail delivery without complex configuration overhead.

This guide shows you how to setup Exim mail server on Ubuntu VPS running 22.04 or 24.04.

Before starting, verify your VPS has a static IP address and proper DNS records configured. You'll need root access and a fully qualified domain name pointing to your server.

Update your system packages first:

sudo apt update
sudo apt upgrade -y

Install Exim and essential mail utilities:

sudo apt install exim4-daemon-heavy exim4-config mailutils -y

The installation prompts you for basic configuration. Choose "internet site" for the general mail configuration type.

Enter your domain name for the system mail name.

Configuring Exim for Virtual Domains

Exim handles virtual domains differently than Postfix. The main configuration file lives at /etc/exim4/update-exim4.conf.conf.

Edit the configuration file:

sudo nano /etc/exim4/update-exim4.conf.conf

Set these parameters for virtual domain support:

dc_eximconfig_configtype='internet'
dc_other_hostnames='yourdomain.com;mail.yourdomain.com'
dc_local_interfaces='0.0.0.0'
dc_readhost=''
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost=''
dc_use_split_config='false'
dc_hide_mailname=''
dc_mailname_in_oh='true'
dc_localdelivery='mail_spool'

Create a virtual domains file to handle multiple domains on your VPS:

sudo mkdir -p /etc/exim4/conf.d/main
sudo nano /etc/exim4/conf.d/main/03_exim4-config_virtual

Add virtual domain configuration:

domainlist virtual_domains = dsearch;/etc/exim4/virtual

# Virtual domain routing
virtual_domain_router:
  driver = redirect
  domains = +virtual_domains
  data = ${lookup{$local_part@$domain}lsearch{/etc/exim4/virtual/$domain}}
  file_transport = virtual_delivery
  cannot_route_message = Unknown user

Setting Up SMTP Authentication

SMTP authentication blocks unauthorized users from sending mail through your server.

Create an authenticator configuration file:

sudo nano /etc/exim4/conf.d/auth/30_exim4-config_examples

Add these authentication methods:

plain_server:
  driver = plaintext
  public_name = PLAIN
  server_condition = "${if crypteq{$auth3}{${extract{1}{:}{${lookup{$auth2}lsearch{/etc/exim4/passwd}{$value}{*:*:*}}}}}{1}{0}}"
  server_set_id = $auth2
  server_prompts = :

login_server:
  driver = plaintext
  public_name = LOGIN
  server_condition = "${if crypteq{$auth2}{${extract{1}{:}{${lookup{$auth1}lsearch{/etc/exim4/passwd}{$value}{*:*:*}}}}}{1}{0}}"
  server_set_id = $auth1
  server_prompts = <| Username: | Password:

Create a password file for authenticated users:

sudo nano /etc/exim4/passwd

Add users in this format:

user1@yourdomain.com:$1$salt$hashedpassword
user2@yourdomain.com:$1$salt$hashedpassword

Generate encrypted passwords using the mkpasswd utility:

mkpasswd -m md5

Hostperl VPS hosting customers find this authentication setup integrates cleanly with existing user management workflows.

Configuring SSL/TLS Security

Email security requires proper SSL/TLS configuration for encrypted connections.

Generate a self-signed certificate for testing (use a proper certificate for production):

sudo openssl req -new -x509 -days 365 -nodes -keyout /etc/ssl/private/exim.key -out /etc/ssl/certs/exim.crt

Create the TLS configuration file:

sudo nano /etc/exim4/conf.d/main/03_exim4-config_tlsoptions

Add SSL configuration:

tls_advertise_hosts = *
tls_certificate = /etc/ssl/certs/exim.crt
tls_privatekey = /etc/ssl/private/exim.key
tls_on_connect_ports = 465
tls_require_ciphers = ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
daemon_smtp_ports = 25 : 587 : 465

This configuration enables TLS on standard SMTP ports and enforces strong cipher suites.

Managing Virtual Mailboxes and Delivery

Exim handles virtual mailboxes through its built-in delivery mechanisms.

Create directories for virtual domain storage:

sudo mkdir -p /var/mail/virtual
sudo chown -R Debian-exim:mail /var/mail/virtual
sudo chmod -R 750 /var/mail/virtual

Configure the virtual delivery transport:

sudo nano /etc/exim4/conf.d/transport/30_exim4-config_virtual

Add transport configuration:

virtual_delivery:
  driver = appendfile
  directory = /var/mail/virtual/$domain/$local_part
  maildir_format
  delivery_date_add
  envelope_to_add
  return_path_add
  group = mail
  user = Debian-exim
  mode = 0600
  directory_mode = 0700

For each virtual domain, create mapping files:

sudo mkdir -p /etc/exim4/virtual/yourdomain.com
sudo nano /etc/exim4/virtual/yourdomain.com

Add email addresses and their destinations:

admin@yourdomain.com: admin
support@yourdomain.com: support
info@yourdomain.com: info

Customers using managed VPS hosting find this mailbox structure simpler than complex Postfix virtual table configurations.

Testing Email Delivery and SMTP

After configuration changes, regenerate the Exim configuration and restart the service:

sudo update-exim4.conf
sudo systemctl restart exim4

Test local delivery:

echo "Test message" | mail -s "Test Subject" admin@yourdomain.com

Check the mail queue and logs:

sudo exim4 -bp
sudo tail -f /var/log/exim4/mainlog

Test SMTP authentication using telnet:

telnet localhost 587
EHLO yourdomain.com
AUTH PLAIN

The server should respond with authentication mechanisms.

Test external delivery by sending messages to Gmail or other providers. Monitor the logs for successful delivery or rejection messages.

Security Hardening and Rate Limiting

Implement rate limiting to prevent abuse. Add these controls to your main configuration:

sudo nano /etc/exim4/conf.d/main/03_exim4-config_ratelimit

Configure submission rate limits:

acl_smtp_mail = acl_check_mail
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data

# Rate limiting rules
acl_check_mail:
  deny    message = Sender rate limit exceeded
          ratelimit = 100 / 1h / per_mail / $sender_address
  accept

Create ACL files for security:

sudo nano /etc/exim4/conf.d/acl/30_exim4-config_check_rcpt

Add recipient validation rules:

acl_check_rcpt:
  deny    message = Relay not permitted
          domains = !+local_domains : !+virtual_domains
  accept  domains = +local_domains : +virtual_domains
          endpass
          verify = recipient

Configure firewall rules to protect mail ports:

sudo ufw allow 25/tcp
sudo ufw allow 587/tcp
sudo ufw allow 465/tcp
sudo ufw allow 993/tcp
sudo ufw allow 995/tcp

For additional email security guidance, check our email security for VPS hosting guide covering SPF, DKIM, and DMARC setup.

Monitoring and Maintenance Tasks

Regular monitoring keeps your Exim server operating reliably.

Set up log rotation to manage disk space:

sudo nano /etc/logrotate.d/exim4-custom

Configure log rotation:

/var/log/exim4/mainlog {
    daily
    missingok
    rotate 30
    compress
    notifempty
    postrotate
        /etc/init.d/exim4 reload >/dev/null
    endscript
}

Monitor queue size and processing times:

#!/bin/bash
queue_count=$(exim4 -bp | grep "<" | wc -l)
if [ $queue_count -gt 100 ]; then
    echo "Warning: Mail queue has $queue_count messages"
    exim4 -bp | head -20
fi

Save this as a monitoring script and run it via cron every 15 minutes.

For backup strategies that include mail data, check our email backup setup guide.

Running a reliable mail server requires careful configuration and ongoing maintenance. Hostperl VPS provides the stable infrastructure and technical support needed for production email servers. Our New Zealand-based team understands mail server administration challenges and can help with migrations, troubleshooting, and optimization.

Frequently Asked Questions

How does Exim compare to Postfix for VPS hosting?

Exim offers simpler configuration syntax and built-in virtual domain support. This makes it easier to manage for smaller hosting operations. Postfix provides more granular control but requires additional components like Dovecot for complete mail services.

What are the minimum resources needed for Exim on Ubuntu VPS?

A basic Exim installation requires at least 512MB RAM and 10GB storage. For production use with multiple domains and users, consider 2GB RAM and monitor disk usage for mail storage growth.

Can I migrate from Postfix to Exim without losing emails?

Yes, but the process requires careful planning. Back up existing mailboxes, export configuration settings, and test thoroughly before switching. Consider our migration assistance if you need professional support.

How do I configure Exim to work with webmail interfaces?

Exim handles SMTP delivery while webmail requires IMAP/POP3 services. Install Dovecot alongside Exim, or reference our Roundcube webmail integration guide for complete webmail setup.

What SSL certificates should I use with Exim?

Use Let's Encrypt for free SSL certificates or commercial certificates for enhanced trust. Configure both TLS on port 587 for submission and STARTTLS on port 25 for server-to-server communication.