# Cis Ubuntu1804 V220 2 2 16

> Ensure mail transfer agent is configured for local-only mode

- Skill: `cyberstrikeus/cis-ubuntu1804-v220-2-2-16` (Agent Skill)
- Install (CLI): `npx skillmds@latest add cyberstrikeus/cis-ubuntu1804-v220-2-2-16`
- Raw SKILL.md: https://api.skillmd.com/api/skills/cyberstrikeus/cis-ubuntu1804-v220-2-2-16/raw
- Safety review: PASS (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: cyberstrikeus (https://skillmd.com/u/cyberstrikeus)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/cyberstrikeus/cis-ubuntu1804-v220-2-2-16

---


# 2.2.16 Ensure mail transfer agent is configured for local-only mode (Automated)

## Profile

- Level 1 - Server
- Level 1 - Workstation

## Description

Mail Transfer Agents (MTA), such as sendmail and Postfix, are used to listen for incoming mail and transfer the messages to the appropriate user or mail server. If the system is not intended to be a mail server, it is recommended that the MTA be configured to only process local mail.

## Rationale

The software for all Mail Transfer Agents is complex and most have a long history of security issues. While it is important to ensure that the system can process local mail messages, it is not necessary to have the MTA's daemon listening on a port unless the server is intended to be a mail server that receives and processes mail from other systems.

## Audit Procedure

### Command Line

Run the following script to verify that the MTA is not listening on any non-loopback address (`127.0.0.1` or `::1`):

```bash
#!/usr/bin/env bash

{
l_output=""
l_output2=""
a_port_list=("25" "465" "587")

# Check if inet_interfaces is not set to all
if [ "$(postconf -n inet_interfaces)" != "inet_interfaces = all" ]; then
   for l_port_number in "${a_port_list[@]}"; do
      if ss -plntu | grep -P -- ':'"$l_port_number"'\b' | grep -Pvq -- '\h+(127\.0\.0\.1|(?:::1\]?)):'"$l_port_number"'\b'; then
         l_output2="$l_output2\n - Port \"$l_port_number\" is listening on a non-loopback network interface"
      else
         l_output="$l_output\n - Port \"$l_port_number\" is not listening on a non-loopback network interface"
      fi
   done
else
   l_output2="$l_output2\n - Postfix is bound to all interfaces"
fi

unset a_port_list

# Provide output from checks
if [ -z "$l_output2" ]; then
   echo -e "\n- Audit Result:\n ** PASS **\n$l_output\n"
else
   echo -e "\n- Audit Result:\n ** FAIL **\n - Reason(s) for audit failure:\n$l_output2\n"
   [ -n "$l_output" ] && echo -e "\n- Correctly set:\n$l_output\n"
fi
}
```

## Expected Result

PASS - No ports listening on non-loopback network interfaces.

## Remediation

### Command Line

Edit `/etc/postfix/main.cf` and add the following line to the RECEIVING MAIL section. If the line already exists, change it to look like the line below:

```
inet_interfaces = loopback-only
```

Run the following command to restart `postfix`:

```bash
# systemctl restart postfix
```

Note:

- This recommendation is designed around the postfix mail server.
- Depending on your environment you may have an alternative MTA installed such as exim4. If this is the case consult the documentation for your installed MTA to configure the recommended state.

## References

1. NIST SP 800-53 Rev. 5: CM-7

## CIS Controls

- v8: 4.8 - Uninstall or Disable Unnecessary Services on Enterprise Assets and Software
- v7: 9.2 - Ensure Only Approved Ports, Protocols and Services Are Running

