Handling Email Delivery with Dynamic IP Addresses on Ubuntu Server using Postfix

Abstract: Configure Postfix on Ubuntu to relay email through a smart host, bypassing dynamic IP blocks and ensuring reliable delivery.

Created: 2026-10-03 by
Sending email from a Ubuntu server with a dynamic IP address requires configuring Postfix to relay through a trusted SMTP provider rather than sending directly. Direct delivery is blocked by most major providers due to lack of static IPs and reverse DNS. By using a smart host, you ensure reliable delivery while bypassing the limitations of residential or dynamic network connections.

Understanding the Challenge of Dynamic IPs

Most Internet Service Providers (ISPs) assign dynamic IP addresses to home and small business connections. These addresses change periodically and rarely have proper reverse DNS (PTR) records pointing back to a hostname. Major email providers like Gmail, Outlook, and Yahoo maintain strict blocklists for these ranges. If your Ubuntu server attempts to send mail directly, it will likely be rejected or sent to spam folders because the receiving server cannot verify the sender's identity. To solve this, we must shift the responsibility of reputation management to a dedicated mail relay service. This approach involves configuring Postfix to forward all outgoing mail to a specific gateway that has a static IP and good deliverability history. This method is standard practice for self-hosted servers without fixed enterprise-grade networking.

Choosing a Smart Host Provider

Before modifying configuration files, you need an account with a mail relay service. Popular options include SendGrid, Mailgun, Amazon SES, or even your ISP’s own SMTP server if they allow it. For this guide, we assume you are using a generic SMTP relay that supports authentication via username and password or API keys. Ensure your chosen provider allows outbound traffic on port 587 (Submission) or 465 (SMTPS). You must also register a domain name and create the necessary DNS records for your specific setup. While the relay handles the heavy lifting, having a valid domain helps in identifying your organization. You should set up SPF (Sender Policy Framework) records to authorize the relay service to send mail on your behalf. Without this, recipients may still flag your messages as suspicious even if the relay delivers them successfully.

Configuring Postfix for Relay

The core of the solution lies in editing the main Postfix configuration file located at /etc/postfix/main.cf. You need to define the smart host and enable SASL authentication. First, locate the relayhost parameter. By default, it is commented out. Uncomment it and set it to your provider’s server address enclosed in square brackets to prevent MX lookups. For example:
relayhost = [smtp.provider.com]:587
Next, you must store your credentials securely. Create a new file at /etc/postfix/sasl_passwd and add your login details in the following format:
[smtp.provider.com]:587    your_username:your_password
Secure this file by changing its permissions so only the root user can read it. Run the following command in your terminal:
sudo chmod 600 /etc/postfix/sasl_passwd
After saving the credentials, you must generate the hash database that Postfix uses for fast lookups. Execute the postmap command on the password file:
sudo postmap /etc/postfix/sasl_passwd
This creates a sasl_passwd.db file alongside your text file. Now, return to main.cf and add the authentication settings. Enable SASL support and specify the password map:
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
The TLS setting ensures that your credentials are encrypted during transmission. The noanonymous option prevents unauthenticated access attempts. Once these lines are added, save the file.

Handling IP Changes and Restarting Services

One advantage of using a smart host is that your local IP address changes do not affect the ability to send mail. The relay server sees the connection coming from your current IP, but since it authenticates your identity via username and password, the underlying IP variation is irrelevant to the recipient. However, you must ensure that your firewall allows outbound connections to port 587 or 465. On Ubuntu, UFW (Uncomplicated Firewall) might block these ports by default. Check your status with sudo ufw status and allow outgoing traffic if necessary. After updating the configuration, restart the Postfix service to apply the changes:
sudo systemctl restart postfix
Monitor the mail log to verify successful operation. Use the following command to watch real-time logs:
sudo tail -f /var/log/mail.log
Send a test email to an external address. In the logs, you should see entries indicating that the message was accepted by the relay host and queued for delivery. If you encounter errors, check the log for specific rejection codes. Common issues include incorrect passwords or blocked ports. For more information on managing Postfix security, you might find it useful to review how to restrict SASL accounts by IP addresses in Postfix on Ubuntu 22.04, which can add an extra layer of protection against unauthorized usage. Additionally, understanding how Postfix handles sender envelope addresses can help troubleshoot mismatched headers that sometimes occur during relay processes.

Verifying DNS and SPF Records

Even with a relay, your domain must be properly configured. Log in to your domain registrar’s DNS management console. Add a TXT record for your domain containing your SPF policy. It should look something like this:
v=spf1 include:provider.com ~all
Replace provider.com with the actual SPF include mechanism provided by your email service. This tells other servers that your designated relay is allowed to send emails for your domain. Without this record, some recipients may reject your mail despite successful relay delivery. Verify the record propagation using tools like dig or online DNS checkers before relying on it for critical communications.

Frequently Asked Questions

Why does my email go to spam even with a smart host?

Spam filtering depends heavily on content and sender reputation. Ensure your SPF record is correctly published and matches your relay provider. Also, avoid sending bulk unsolicited mail, as relays monitor bounce rates and complaint levels closely.

Can I use my ISP’s SMTP server as a relay?

Yes, many ISPs provide SMTP servers for customers. However, they often impose strict limits on daily volume and may block port 25. Port 587 is usually available for authenticated submissions. Check your ISP’s documentation for specific relay addresses and authentication requirements.

How do I update my password if it changes?

Simply edit the /etc/postfix/sasl_passwd file with your new credentials. After saving, run sudo postmap /etc/postfix/sasl_passwd again to update the database file. Then restart Postfix with sudo systemctl restart postfix to apply the changes.

Is it safe to store passwords in plain text in sasl_passwd?

While the file itself is restricted to root-only access, storing plain text passwords is generally discouraged for high-security environments. Consider using certificate-based authentication or OAuth2 if your provider supports it, which eliminates the need for password files entirely.

What happens if the relay server goes down?

Postfix will queue your messages locally in the mail queue until the relay becomes available again. You can check the queue status using mailq. The system will retry delivery at regular intervals defined in your configuration, ensuring no mail is lost during temporary outages.

Latest News

How to Display Output of xterm Command in Terminal Screen using Cron

Resolve the inability to display xterm output in a terminal screen from cron by redirecting logs or using wall instead of insecure X11 workarounds.

Read More
Expose Local Server on VPS Preserving Real Client IPs (OS Level)

Resolve VPS logging showing only gateway IPs by configuring reverse proxies to forward real client addresses via X-Forwarded-For headers.

Read More
How to Clear Recent Files History in Linux without Deleting Actual Files?

Clear recent files history in Linux by deleting ~/.local/share/recently-used.xbel without removing the actual files.

Read More
Best HDD Copy Strategy: Manually Syncing and Rewriting Scratch

Resolve data drift between two 4TB hard drives by using rsync with the --delete flag to manually sync and rewrite scratch data for an exact mirror.

Read More
Understanding Bash Prompt Abbreviations: An Overview

Resolve repetitive typing errors by creating and persisting Bash aliases in the .bashrc file for improved command-line efficiency.

Read More
Free Tools and Methods to Log Real-Time Performance Details in Task Manager

Log real-time CPU and memory metrics to CSV files using Windows Performance Monitor Data Collector Sets to troubleshoot system slowness.

Read More
Contact Qatar Airways Customer Service: Phone Number, Help Center, and More

Resolve urgent Qatar Airways reservation issues like flight changes and baggage claims using the US phone number +1801-855-5905 or online self-service tools.

Read More
Windows 11: Alt Codes Displaying Wrong Characters - Solutions

Resolve Windows 11 Alt codes showing wrong characters by verifying the US keyboard layout and enabling Num Lock.

Read More
Run Programs with Elevated Privileges: A Comprehensive Guide

Eliminates the need to type sudo for frequent administrative tasks by configuring .bashrc aliases or functions.

Read More
Dynamically Changing Dates in Excel Formulas Using Cells

Eliminate manual date updates in Excel by using cell references to create dynamic formulas that automatically adjust calculations when input dates change.

Read More
Granting Edit Access to a Specific Excel Sheet in an Office 365 User Email ID-Based Login

Excel Online lacks native sheet-level permissions, so users must split workbooks or use worksheet protection to isolate edit access for specific tabs.

Read More
Creating Network Load on Local Wi-Fi from One PC

Generate sustained Wi-Fi bandwidth load from a single PC using a VM SFTP server to test router stability and throughput.

Read More
Changing the Default Editor for Batch Files in Windows 11's File Explorer

Resolve the issue of batch files opening in Notepad by changing the default editor to a preferred application like VS Code.

Read More
Gain WiFi Connection Minutes Before Losing it by Changing MAC Address

Bypass MAC address filtering to restore WiFi connectivity temporarily when a device is blocked by network administrators.

Read More
Photos Folders Turned Black: Troubleshooting Picture Applications on Windows

Resolve black screens in Windows Photos by resetting the app, updating graphics drivers, and repairing system files.

Read More
Troubleshooting High CPU Temperature Values: A Step-by-Step Guide

Resolve high CPU temperatures and thermal throttling by monitoring with Speedfan, cleaning dust from cooling components, and replacing degraded thermal paste.

Read More
Make cURL establish TLS connection with CA unknown

Resolve cURL TLS connection failures with unknown or self-signed certificates by using the --insecure flag to bypass CA validation.

Read More
Troubleshooting Incorrect Network Metrics Values in Grafana, Prometheus, InfluxDB, and Telegraf

Fix incorrect network metrics in Grafana, Prometheus, InfluxDB, and Telegraf by verifying interface selection, resolving unit mismatches, and handling counter resets.

Read More
Start Another Terminal Window (cmd.exe) Windows Repair/Troubleshoot

Provides step-by-step instructions to access the Windows Command Prompt via bootable media for advanced system repair and troubleshooting.

Read More
Thinkpad P1 Gen 6: Sudden Thunderbolt 3 Dock USB-C Charging Stopped Working

Resolve sudden Thunderbolt 3 dock USB-C charging and internet failure on ThinkPad P1 Gen 6 by updating firmware, resetting the dock, and adjusting power settings.

Read More
ASUS Windows 11 Laptop: Internet Connection Issue with Hotspot

Resolve ASUS Windows 11 laptop spinning wheel issue when connecting to mobile hotspot by resetting network stack, disabling IPv6, and adjusting power settings.

Read More
Developing iOS Project with Firebase: Logging in and Sending Push Notifications

Integrates Firebase to enable secure user authentication and push notifications in iOS applications.

Read More
Troubleshooting Bash Script with Suspected Issues of Spaces, Dashes, Filenames and Quoting

Resolve Bash script failures caused by word splitting, globbing, and special characters in filenames by applying proper quoting techniques.

Read More
Populating OneDrive Folder for Local Backup without Affecting Remote Files

Prevent OneDrive from deleting remote files during Windows reinstallation by unlinking the account or using symbolic links to isolate local data.

Read More
Force First Frame as Keyframe Without Re-encoding: A Quick Solution

Resolve inaccurate seeking and playback glitches by re-encoding video to ensure the first frame is a valid keyframe.

Read More
Find Information in Database Using WSL (Ubuntu) on Windows-10

Resolve database connection issues from WSL Ubuntu on Windows 10 by configuring client tools and network access to query remote or local servers.

Read More
Configuring a New Router with Different Networks: One Family, One Guest

Resolve IP conflicts and isolate guest traffic by configuring a second router with a distinct subnet via its WAN port.

Read More
Quickly Open Multiple Stock Websites with a Single Command

Solve the problem of manually opening multiple stock research websites by creating a single command to launch them simultaneously on Windows, macOS, or Linux.

Read More
Improved Adobe Acrobat Search Experience: Access Advanced Search with Ease

Access advanced search filters like case sensitivity and regex in Adobe Acrobat by clicking More Options in the Find bar.

Read More
Port Forwarding VM via OpenVPN: A Comprehensive Guide

Configure OpenVPN server and iptables to forward specific ports from VPN clients to a virtual machine's internal IP address.

Read More
Understanding Partitions in the 1980s: A Look Back at MS-DOS and Master Boot Record

Explains how the Master Boot Record and partition table enabled MS-DOS to manage multiple disk volumes on a single physical drive.

Read More
Windows 10 Enterprise: Keyboard Not Detected in Managed Organization with Admin Privileges

Resolve Windows 10 Enterprise keyboard detection failures caused by Group Policy restrictions, driver corruption, or USB enumeration errors.

Read More
Can't Find x86_64 Versions of Applications on MacOS arm64 (M1)

Resolve missing x86_64 app issues on M1 Macs by installing Rosetta 2 and reinstalling apps as universal binaries.

Read More
How to Hide Installation Source for an Android App

Manage Android app installation source visibility by using USB transfers or file managers to reduce browser traces and isolate data via work profiles.

Read More
Connecting Momentus 4200.2 ST9808210A Hard Drive via USB Cable

Resolve inability to access Seagate Momentus 4200.2 ST9808210A hard drive by connecting it via USB using a compatible SATA-to-USB adapter and configuring the disk in Windows.

Read More