How To Send Mail Via Terminal?

Ahmad Raza Ahmad Raza
9 min read

Introductio

In today's digital age, email communication remains an integral part of both personal and professional interactions. While graphical email clients offer a user-friendly interface for composing and sending emails, there are times when the efficiency and flexibility of the command line are preferred. Whether you're managing servers remotely, automating tasks, or simply seeking a streamlined way to handle email, the terminal provides a powerful platform for email correspondence.

In Ubuntu, a popular Linux distribution, sending emails from the terminal is made possible by leveraging tools like Postfix. Postfix is a free and open-source mail transfer agent (MTA) that efficiently routes and delivers email messages. With its robust features and extensive configuration options, Postfix serves as a reliable backbone for email delivery on Ubuntu systems.

In this article, we'll explore how to harness the capabilities of Postfix tools to send emails directly from the command line in Ubuntu. We'll cover the installation of Postfix, configuration essentials, and practical examples of sending emails using command-line interfaces. Whether you're a system administrator, developer, or Linux enthusiast, mastering email delivery via the terminal can enhance your productivity and streamline your workflow.

Join us as we delve into the world of Postfix-powered email delivery on Ubuntu, empowering you to wield the command line for efficient and effective communication.

Installation of Postfix and Mailx?

To install Postfix and Mailx on Ubuntu, you can follow these steps:

1. Install Postfix:

Postfix is readily available in the Ubuntu repositories, making it easy to install using the apt package manager.

Open a terminal window and run the following command to install Postfix:

sudo apt-get update
sudo apt-get install postfix

During the installation process, you'll be prompted to configure Postfix. You can select the configuration that best suits your needs. If you're unsure, you can choose the "Internet Site" configuration, which is suitable for most users. Follow the prompts to complete the installation and configuration.

2. Install Mailx:

Mailx is a simple command-line mail client that provides a convenient interface for sending and receiving emails.

You can install Mailx using the following command:

sudo apt-get install mailutils

This command will install the mailutils package, which includes Mailx along with other mail-related utilities.

Once both Postfix and Mailx are installed, you can start sending emails using the command-line interface provided by Mailx (mail command). You can also configure Postfix further if needed, depending on your specific requirements for email delivery.


Editing postfix Configuration

Editing the Postfix configuration involves modifying the main configuration file (main.cf) to customize various settings according to your requirements. Here are the steps to edit the Postfix configuration on Ubuntu:

1. Open the Postfix Configuration File:

The main configuration file for Postfix is located at /etc/postfix/main.cf. You can edit this file using a text editor of your choice. For example, you can use nano:

sudo nano /etc/postfix/main.cf

2. Understand Postfix Configuration Directives:

Before making any changes, it's essential to understand the various configuration directives available in main.cf. These directives control different aspects of Postfix's behavior, including network settings, security options, and email delivery parameters. You can find detailed explanations of these directives in the Postfix documentation or by using comments within the configuration file itself.

3. Make Changes to the Configuration:

Once you've familiarized yourself with the configuration directives, you can make the necessary changes to customize Postfix according to your needs. For example, you might want to specify the domain name for which Postfix will accept emails, configure relay settings, or define email aliases.

Here are a few common configuration changes you might make:

  • Set the myhostname directive to specify the hostname of your mail server.

  • Configure the mydomain directive to define the domain name associated with your mail server.

  • Set the myorigin directive to specify the domain name used in outgoing emails.

  • Configure the relayhost directive if you're using a relay host for outgoing email delivery.

  • Define email aliases using the alias_maps directive.

Ensure that you save your changes after editing the configuration file.

Add this following code of line:

relayhost = [smtp.gmail.com]:587
myhostname= your_hostname

4. Add Following Line:

Just add following line in your main.cf

Location of sasl_passwd we saved

smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd

Enables SASL authentication for postfix

smtp_sasl_auth_enable = yes
smtp_tls_security_level = encrypt

Disallow methods that allow anonymous authentication

smtp_sasl_security_options = noanonymous

5. Reload Postfix Configuration:

After making changes to the main.cf file, you need to reload the Postfix configuration for the changes to take effect. You can do this by running the following command:

sudo systemctl reload postfix

This command reloads the Postfix service without interrupting email delivery.

sasl_passwd file setup

The SASL (Simple Authentication and Security Layer) password file, sasl_passwd, is used to store authentication credentials for sending emails through a mail relay (SMTP server) that requires authentication. This file is particularly useful when you want Postfix to relay emails through an external SMTP server such as your internet service provider's mail server.

Here's how you can set up the sasl_passwd file for Postfix on Ubuntu:

1. Create thesasl_passwd File:

First, create the sasl_passwd file in the /etc/postfix directory:

sudo nano /etc/postfix/sasl_passwd

2. Add Authentication Credentials:

In the sasl_passwd file, add the SMTP server address and the corresponding authentication credentials. The format for each line is as follows:

[smtp_server]:[port] username:password

For example, if you're using smtp.gmail.com on port 587, and your username is user@gmail.com and password is password, the entry would look like this:

[smtp.gmail.com]:587 user@example.com:password

Here the above password is Google SMTP password let see below how to generate?

How to Generate Google SMTP Password?

To use Google's SMTP server for sending emails, you need to generate an application-specific password (SMTP password) for your Gmail account. This is necessary for authenticating with Google's SMTP server, as Google no longer allows the use of the account's main password for third-party apps due to security reasons.

Here's how to generate a Google SMTP password:

1. Enable 2-Step Verification:

First, you need to enable 2-Step Verification (also known as two-factor authentication) for your Google account if you haven't already. This adds an extra layer of security to your account and is required for generating an application-specific password.

To enable 2-Step Verification:

  • Go to your Google account settings: Google Account

  • Under the "Security" tab, find "Signing in to Google" and click on "2-Step Verification."

  • Follow the steps to set up 2-Step Verification.

2. Generate an App Password:

Once 2-Step Verification is enabled, you can generate an app password for your SMTP configuration.

  • Go to your Google account settings: Google Account

  • Under the "Security" tab, find "Signing in to Google" and click on "App passwords."

  • You may need to sign in again for security purposes.

  • Select the app and device for which you want to generate a password (choose "Other" and enter a name such as "Postfix").

  • Click "Generate" to create an app password.

3. Save the App Password:

The app password will be a 16-character code that you'll need to use for SMTP authentication. Save this password securely, as you won't be able to view it again once you navigate away from the page.

4. Use the App Password for SMTP Authentication:

In your Postfix configuration (/etc/postfix/sasl_passwd), use the app password instead of your Google account's main password. For example:

[smtp.gmail.com]:587 user@gmail.com:your-app-password

Make sure to save and compile the sasl_passwd file as explained in the previous steps.

After setting up the app password and updating your Postfix configuration, you should be able to authenticate with Google's SMTP server and send emails using your Gmail account.

Continue Sasl_passwd configuration

3. Secure thesasl_passwd File:

To ensure the sasl_passwd file is secure, set the file permissions so that only the owner (root) can read and write to it:

sudo chmod 600 /etc/postfix/sasl_passwd

4. Compile thesasl_passwd File:

After creating and securing the sasl_passwd file, you need to compile it into a hashed format that Postfix can use. This can be done using the postmap command:

sudo postmap /etc/postfix/sasl_passwd

This command creates a hashed file named sasl_passwd.db in the same directory (/etc/postfix/).

5. Test the Configuration:

Test the configuration by sending an email through Postfix and checking whether it successfully relays through the specified SMTP server. If you encounter any issues, review the Postfix logs (/var/log/mail.log) to troubleshoot.

Sending Main!

To test your Postfix configuration and the use of Google's SMTP server to send emails, you can use the mail or sendmail command in the terminal. These commands allow you to compose and send emails directly from the command line. Here's a step-by-step guide to testing your setup:

1. Compose an Email Using themail Command:

To send an email from the terminal, you can use the mail command followed by the recipient's email address:

echo "Test email body" | mail -s "Test Subject" recipient@example.com
  • echo "Test email body": This specifies the body of the email.

  • |: This is a pipe operator, which passes the output of the echo command as input to the mail command.

  • mail -s "Test Subject"recipient@example.com: This part of the command sends an email with the subject "Test Subject" to the specified recipient (recipient@example.com).

Replace "Test email body" with the desired content of the email and recipient@example.com with the email address of the recipient you want to send the test email to.

2. Check the Email Delivery:

After running the mail command, check whether the recipient receives the email. Depending on the configuration and the relay server, it may take a few moments for the email to be delivered.

3. Monitor the Postfix Log Files:

If you encounter any issues or want to monitor the status of email delivery, you can check the Postfix log files located at /var/log/mail.log or /var/log/mail.err:

sudo tail -f /var/log/mail.log

This command will continuously output the last few lines of the mail log file, which includes information about sent and received emails, as well as any errors or issues encountered during email delivery.

4. Troubleshoot Any Issues:

If the test email is not delivered successfully, examine the log files for any error messages. Common issues may include authentication problems, incorrect server settings, or network connectivity issues. Once you identify the problem, adjust your Postfix configuration accordingly and retest.

Conclusion:

Sending emails from the terminal in Ubuntu using Postfix tools offers a powerful and efficient way to handle your email correspondence, especially when you require automation or remote server management. By leveraging the capabilities of Postfix and related tools like Mailx, you can customize your email delivery setup to suit your specific needs.

In this article, we've covered the process of installing and configuring Postfix and Mailx, setting up an sasl_passwd file for SMTP authentication, and generating an application-specific password for Gmail accounts. These steps are essential for ensuring secure and reliable email delivery through Google's SMTP server or other relay servers.

Testing your setup with a test email allows you to verify the configuration and ensure smooth email delivery. Monitoring the Postfix log files helps you troubleshoot any issues and make necessary adjustments.

By mastering these skills, you can take full advantage of Ubuntu's command-line capabilities for sending emails, which can significantly enhance your workflow and productivity. Whether you're automating tasks, managing servers, or just prefer working from the terminal, Postfix provides a robust foundation for your email needs.

We hope this guide has provided you with valuable insights and practical steps to set up and test email delivery using Postfix tools in Ubuntu. Now, go ahead and harness the power of the terminal for your email communication!

0
Subscribe to my newsletter

Read articles from Ahmad Raza directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Ahmad Raza
Ahmad Raza

Greetings! I'm Ahmad Raza, a dedicated B.Tech student in Computer Science. Enthusiastically navigating the realms of Data Science and Machine Learning for a year, I proudly hold certifications as a "pwskills" endorsed Data Scientist and a Data Analytics certified by Google Data Analytics Course. My journey spans over 60 projects, showcasing my prowess in AI, ML, and data analysis. With a passion for innovation, I thrive on transforming challenges into opportunities, backed by a positive mindset and a relentless pursuit of excellence. Eager to contribute my skills and knowledge, I embrace each project as a chance to make a positive impact and advance the frontiers of technology.