What is the Sendmail Command in Linux?

Learn via video courses
Topics Covered

Sendmail, a popular Linux mail transfer agent (MTA), sends and receives emails. It provides command-line and scripted email delivery. mail on linux

Sendmail reads the message from standard input or a file and sends it to the recipient(s) or mail servers. You can provide the content of the email message interactively or by using input redirection or a file.

In this article, we will discuss Sendmail on Linux and also learn about its configuration.

Syntax

The basic syntax of the Sendmail command is as follows:

Here,

  • [options] refers to any Sendmail command-line options or flags.
  • [recipient] refers to the email address of the recipient.

Description

Sendmail on Linux is a widely used mail transfer agent (MTA) in Linux and other Unix-like operating systems. It transfers email between mail servers and clients.

As an MTA, Sendmail manages email delivery in the background. Sendmail processes email from clients like email programs, Based on the recipient's domain, Sendmail chooses a mail server.

Some key aspects of Sendmail include:

Queue Management: Sendmail maintains a queue of outgoing emails to ensure delivery even during network outages or recipient unavailability.

Routing: Sendmail checks its configuration files for mail exchanges (MX) and domain routes to identify the best route for email delivery.

Security: Sendmail safeguards against spam, unauthorized access, and email counterfeiting. It can authenticate email communications using DKIM and SPF.

Configuration: `Configuration files in /etc/mail/customize Sendmail's behavior. These files establish domain routing, aliases, access control, and other mail-processing features.

Mail Filters: Sendmail's Milter API lets external programs intercept and change incoming and outgoing email messages. Milters screen spam, viruses, and content.

Aliases: Sendmail lets users and groups create shortcut email accounts called aliases. Aliases simplify email addresses and redirect emails to many recipients.

Logging: Sendmail keeps thorough logs for troubleshooting and monitoring. /var/log/maillog logs emails sent and received, connection attempts, including failures and warnings.

Sendmail Mail Filter API (Milter)

Milter, the Sendmail on Linux Mail Filter API, lets external programs process email messages in real-time. Milter intercepts and modifies incoming and outgoing emails based on regulations.

External programs can add spam, virus, content, authentication, encryption, and more to Sendmail by connecting with Milter.

Here's an overview of Milter's integration in Sendmail on Linux:

Milter Registration: To process email, a Milter program must register with Sendmail. The Sendmail configuration file usually specifies the Milter program's location and configuration.

Milter Callbacks: Sendmail calls Milter callbacks for certain email processing events. These callbacks let Milter inspect and change email messages or take other actions based on policies.

Milter Actions: The email message's content or features determine Milter's actions. Modifying the message body or headers, rejecting or accepting it, adding spam or virus flags, and more are examples.

Milter Response: After processing an email, Milter sends Sendmail a response code. Sendmail uses this response code to accept, reject, modify, or process messages.

Sendmail Mail Filter Flags

Sendmail on Linux has several mail filtering flags. These flags customize and regulate email processing. Here are some Common Sendmail mail filter flags:

-b: Specifies the delivery mode as background. When used with the Sendmail command, it queues the message for later delivery in the background rather than attempting immediate delivery.

-q: Forces Sendmail to process the mail queue immediately. This flag is used to manually trigger the delivery of queued messages.

-bp: Lists the contents of the mail queue, displaying the status and details of each message in the queue.

-qX: Sends a signal to the Sendmail process, where 'X' is a specific signal. For example, -qS initiates a queue run with the HUP signal, while -qR initiates a queue run with the TERM signal.

-odq: Disables the queueing of messages. This flag is used when Sendmail should attempt immediate delivery without queueing the message.

-oi: Ignores dots on a line by themselves in the message body. This flag is used when processing messages that may contain lines with a single dot, which would otherwise indicate the end of the message.

-bm: Specifies that Sendmail should run in a mode where it only accepts and queues messages but does not attempt delivery. This flag is useful for testing and debugging purposes.

-bv: Verifies the validity of email addresses without actually delivering the message. It checks if the specified email addresses are valid and exist.

Sendmail Mail Filter Timeouts

Sendmail on Linux lets you set timeouts for email processing activities. These timeouts prevent the mail system from stalling. Here are some common Sendmail mail filter timeouts:

confTO_CONNECT: This timeout controls the maximum time allowed for establishing a connection with a remote mail server. If Sendmail cannot establish a connection within this timeout period, it will consider the connection attempt as failed.

confTO_HELO: Specifies the timeout for receiving the initial HELO/EHLO command from the remote server. This command is part of the SMTP protocol and is used to establish communication between mail servers. If Sendmail doesn't receive the HELO/EHLO command within this timeout, it may terminate the connection.

confTO_MAIL: Defines the timeout for receiving the MAIL FROM command, which specifies the sender's address. If Sendmail doesn't receive this command within the specified timeout, it may terminate the connection.

confTO_RCPT: Controls the timeout for receiving the RCPT TO command, which specifies the recipient's address. If Sendmail doesn't receive this command within the specified timeout, it may terminate the connection.

confTO_DATA: Specifies the timeout for receiving the DATA command, which marks the beginning of the email message body. If Sendmail doesn't receive this command within the specified timeout, it may terminate the connection.

confTO_QUEUERETURN: This timeout controls the maximum time allowed for a message to stay in the queue. If a message exceeds this timeout while in the queue, Sendmail may generate a warning or take appropriate action based on the configuration.

These timeouts can be configured in the Sendmail configuration files, typically located in the /etc/mail/ directory. The actual names and syntax of these timeout settings may vary depending on the specific version and configuration of Sendmail.

Using the Sendmail Configuration Files

Sendmail on Linux requires configuration file changes. These files govern several Sendmail behaviors. Here is an overview of Sendmail configuration files:

/etc/mail/sendmail.cf: This is the main configuration file for Sendmail. It contains a vast number of directives that define how Sendmail operates. The file is typically complex and not meant to be edited directly. Instead, you can use the m4 macro processor to generate the sendmail.cf file from a more manageable source file, such as sendmail. mc (see below).

/etc/mail/sendmail.mc: This file is the source file for generating the sendmail.cf configuration file. It uses the m4 macro language, which provides a more human-readable and customizable format for configuring Sendmail. You can edit the sendmail.mc file to modify various settings and options and then generate the corresponding sendmail.cf file using the m4 macro processor.

/etc/mail/local-host-names: This file contains a list of local domains for which Sendmail accepts email. Each domain should be listed on a separate line. Sendmail considers emails addressed to these domains as local and handles them accordingly.

/etc/mail/access: This file is used for access control. It allows you to specify rules that control which hosts or domains are allowed or denied access to Sendmail. You can define rules based on IP addresses, domain names, or other criteria. The access file is typically used for anti-spam measures and security purposes.

/etc/mail/aliases: This file defines email aliases, which are shortcuts or alternate email addresses associated with a specific user or group. Aliases allow you to redirect emails to multiple recipients or simplify complex email addresses. Each alias is defined on a separate line in the format alias: recipient1, recipient2,...

/etc/mail/virtusertable: This file is used for virtual user mapping. It allows you to map virtual email addresses to actual user accounts on the system. This is useful in situations where Sendmail is configured to handle email for multiple domains or when email addresses do not correspond to system accounts.

Restarting and Refreshing the Sendmail Processes

Restarting or refreshing Sendmail on Linux processes usually applies configuration file modifications. Restarting or refreshing Sendmail involves these steps:

Save the configuration changes: After modifying the Sendmail configuration files, save the changes and ensure that the files are updated with the new configuration settings.

Restart the Sendmail service: To restart the Sendmail service, you need to use the appropriate command based on your Linux distribution. Here are some examples:

For systems using systemd:

For systems using SysV init:

For systems using Upstart:

Restarting the Sendmail service will stop the existing Sendmail processes and start them again with the updated configuration.

Verify the service status: After restarting Sendmail, you can check the status of the service to ensure that it started successfully without any errors. The command to check the service status depends on your Linux distribution. Some common commands include:

For systems using systemd:

For systems using SysV init:

For systems using Upstart:

This will display the current status of the Sendmail service and indicate whether it is running correctly.

Test email functionality: After restarting Sendmail, it's a good practice to test the email functionality to verify that the changes you made to the configuration files are working as intended. You can send a test email to ensure it is processed and delivered correctly.

Following these steps, you can restart or refresh the Sendmail processes after modifying the configuration files, allowing the changes to take effect and ensuring proper email functionality.

Migrating to AIX 7 with 7200-04

Migrating to AIX 7 with 7200-04 refers to the process of upgrading or transitioning an AIX operating system to version 7 with the 7200-04 Technology Level (TL). AIX is IBM's proprietary Unix-based operating system designed for their Power Systems servers.

Migrating to a new version of AIX involves several steps and considerations. Here are some general steps to perform the migration:

Review system requirements: Ensure that your hardware meets the requirements for AIX 7 and the specific TL 7200-04. Check IBM's documentation and release notes for the minimum hardware specifications and any hardware compatibility considerations.

Backup your data: Before performing any major system changes, it's crucial to back up your data. This ensures that you have a reliable copy in case of any issues during the migration process.

Plan the migration: Create a migration plan that outlines the specific steps and tasks involved in the migration process. Consider factors such as downtime requirements, dependencies on other applications, and potential risks.

Obtain the AIX 7 installation media: Acquire the installation media or image for AIX 7 with the 7200-04 TL from IBM. This can be in the form of DVDs, downloadable ISO files, or other delivery methods.

Perform a test migration: It's recommended to perform a test migration on a non-production system or in a controlled environment to validate the process and ensure compatibility with your applications and configurations. This step helps identify and address any potential issues or conflicts before migrating your production environment.

Prepare for the migration: Review and address any prerequisites or compatibility requirements specific to your environment. This may include updating firmware, ensuring application compatibility, resolving any known issues, and verifying disk space availability.

Begin the migration process: Follow the installation instructions provided by IBM to initiate the AIX 7 installation. This typically involves booting from the installation media, selecting the appropriate installation options, and specifying the target disk and filesystem layout.

Configure the migrated system: After the installation is complete, configure the system settings, network configurations, user accounts, and any additional software or drivers required for your environment.

Test and validate: Once the migration is finished, thoroughly test the migrated system to ensure that all applications and services are functioning as expected. Verify data integrity and perform any necessary system optimizations or adjustments.

Monitor and support: Continuously monitor the migrated system to identify any issues that may arise after the migration. Provide ongoing support and maintenance as needed.

Defining Aliases

Defining email aliases allows you to redirect incoming messages to one or more recipients. Aliases let you link numerous email accounts to one.

To define aliases in Sendmail, you need to modify the appropriate configuration file, typically /etc/mail/aliases. Here's a step-by-step guide to defining aliases:

Open the aliases configuration file: Use a text editor to open the aliases file, usually located at /etc/mail/aliases or a similar path.

Define the aliases: Each alias is specified on a separate line in the following format: alias_name: recipient1, recipient2, Here's an example:

sales: enquiry@example.com, sales@example.com

support: helpdesk@example.com

In this example, the sales alias is associated with two recipients (enquiry@example.com and sales@example.com), while the support alias is associated with a single recipient (helpdesk@example.com).

Save the changes: After defining the aliases, save the modifications to the aliases file.

Generate the aliases database: Sendmail requires a database version of the aliases file to process email efficiently. To generate the aliases database, you need to run the newaliases command. Open the terminal and execute the following command:

This command rebuilds the aliases database and makes it ready for use by Sendmail.

Test the aliases: To ensure that the aliases are working correctly, you can send a test email to one of the defined aliases and verify that it is properly redirected to the associated recipients.

Flags

FlagsFunctionality
-bSpecifies the delivery mode as background.
-qForces Sendmail to process the mail queue immediately.
-bpLists the contents of the mail queue.
-qXSends a signal to the Sendmail process, where 'X' is a specific signal.
-odqDisables the queueing of messages.
-oiIgnores dots on a line by themselves in the message body.
-bmSpecifies that Sendmail should run in a mode where it only accepts and queues messages.
-bvVerifies the validity of email addresses without delivering the message.

Exit Status

Sendmail on Linux gives an exit status indicating success or failure. The exit status is a number that indicates Here is an overview of the exit status values commonly used by Sendmail:

0: The Sendmail command executed successfully without any errors or issues.

1: Indicates general or unspecified errors during the execution of the Sendmail command. This exit status is usually used when the command encounters unexpected or unknown errors.

64: Indicates a usage error or incorrect command-line options. This exit status is typically used when the Sendmail command is executed with invalid or unsupported flags or options.

69: Indicates an issue with the Sendmail command's input data or message content. This exit status is often used when there are errors or inconsistencies in the email message being processed.

70: Indicates an issue with the configuration of Sendmail. This exit status is used when there are errors or problems with the Sendmail configuration files or settings.

75: Indicates temporary failures during email delivery. This exit status is often used when the Sendmail command encounters temporary issues while trying to deliver the email.

78: Indicates a permanent or permanent-like error during email delivery. This exit status is typically used when the Sendmail command encounters persistent issues or errors that prevent successful email delivery.

These exit status values may vary depending on the specific version and configuration of Sendmail you are using.

Files

Sendmail on Linux uses various files to store configuration information, logs, and queued messages. Here are some important files commonly associated with Sendmail:

/etc/mail/sendmail.cf: Sendmail's main configuration file. It contains Sendmail server configurations. The configuration file's location and name depend on the distribution and setup.

/etc/mail/sendmail.mc: This file generates sendmail. cf. It simplifies Sendmail configuration with m4 macros. Changes to this file must be compiled using the m4 macro processor to generate the sendmail.cf file.

/etc/mail/local-host-names: This file lists Sendmail's local email domains. Each domain needs a line. Sendmail treats emails from these domains as local.

/etc/mail/access controls access: It lets you control Sendmail access by host or domain. Rules might be based on IP addresses, domain names, or other criteria.

/etc/mail/aliases: This file lists email aliases for a person or group. Aliases simplify email addresses and redirect emails to many recipients.

/etc/mail/virtusertable: The virtusertable file maps virtual users. It links virtual email addresses to system users. This helps when Sendmail handles emails for numerous domains or email addresses that don't match system accounts.

/var/log/maillog: Sendmail's default log. It stores sent and received emails, connection attempts, mistakes, and other mail delivery data. The distribution and Sendmail setup determine the log file location and name.

Mail Queue Directory: Sendmail stores outgoing email in a queue directory until delivery. Depending on Sendmail settings, the default location is /var/spool/mqueue.

Conclusion

  • Linux and Unix-like systems employ Sendmail, known to be a robust MTA.

  • It sends, receives, and routes email across networks.

  • Sendmail's adaptability makes it ideal for many email-handling jobs and settings.

  • Sendmail's behavior is customized via sendmail. cf and sendmail. mc.

  • Aliases in configuration files can redirect emails to many recipients or simplify complex email addresses.

  • Sendmail supports the Mail Filter API (Milter) for spam screening and content manipulation with external programs.

  • -q, -bp, and -bm options can influence Sendmail's mail filtering and processing behavior.

  • Sendmail on Linux uses timeouts to avoid the email system hangs.

  • To implement configuration file changes, restart or refresh is required in Sendmail.

  • Migrating to a Sendmail version like AIX 7 with 7200-04 requires upgrading the operating system and performing particular migration processes.