Mutt – A Command Line Email Client to Send Mails from Terminal

As a System admin, sometimes we need to send mails to users or someone else from the server and for that we used to go with a web based interface to send email, is it really that handy ? Absolutely No.

Linux Mutt Command
Mutt Command Line Email Client

Here in this tutorial, we’ll be using the mutt (a terminal email client) command to send email from command line interlace.

What is Mutt?

Mutt is a command line based Email client. It’s a very useful and powerful tool to send and read mails from command line in Unix based systems. Mutt also supports POP and IMAP protocols for receiving mails. It opens with a coloured interface to send Email which makes it user friendly to send emails from command line.

Mutt Features

Some other important features of Mutt is as follows:

  1. Its very Easy to install and configure.
  2. Allows us to send emails with attachments from the command line.
  3. It also has the features to add BCC (Blind carbon copy) and CC (Carbon copy) while sending mails.
  4. It allows message threading.
  5. It provides us the facility of mailing lists.
  6. It also support so many mailbox formats like maildir, mbox, MH and MMDF.
  7. Supports at least 20 languages.
  8. It also support DSN (Delivery Status Notification).

How to Install Mutt in Linux

We can install Mutt Client in our Linux box very easily with any package installers as shown.

# apt-get install mutt (For Debian / Ubuntu based system)
# yum install mutt (For RHEL / CentOS / Fedora based system)
Configuration files

Configuration files of Mutt Email client.

  1. Main Configuration file: To make changes globally for all users For mutt, you can make changes in its mail configuration file “/etc/Muttrc“.
  2. User Configuration file of Mutt : If you want to set some specific configuration for a particular user for Mutt, you can configure those settings in ~/.muttrc or ~/.mutt/muttrc files.
Basic Syntax of mutt command
mutt options recipient
Read Emails with Mutt

To read emails of the user with you are currently logged in, you just need to run “mutt” on the terminal, it will load the current user’s mailbox.

[root@tecmint ~]#  mutt
Read Mail from Command Line
Read Mail from Terminal

To read the emails of a specific user, you need to specify which mail file to read. For example, You (as root) wants to read mails of user “John“, you need to specify his mail file with “-f” option with mutt command.

[root@tecmint ~]#  mutt -f /var/spool/mail/john

You may also use “-R” option to open a mailbox in read-only mode.

Send an email with mutt command

In this example, following command will send a test Email to [email protected]. The “-s” option is used to specify Subject of the mail.

[root@tecmint ~]#  mutt -s "Test Email" [email protected]

When you enter the above command in the terminal, it opens up with an interface and confirms the recipient address and subject of the mail and opens up the interface, here you can make changes to recipient mail address.

  1. Change recipient email address pressing t.
  2. Change Cc address with c.
  3. Attach files as attachments with a.
  4. Quit from the interface with q.
  5. Send that email by pressing y.

Note: When you press “y” it shows the status below that mutt is sending mail.

Send Mail from Command Line
Send Mail from Terminal
Add Carbon copy(Cc) and Blind Carbon copy(Bcc)

We can add Cc and Bcc with mutt command to our email with “-c” and “-b” option.

[root@tecmint ~]# mutt -s "Subject of mail" -c <email add for CC> -b <email-add for BCC> mail address of recipient
[root@tecmint ~]# mutt -s “Test Email” -c [email protected]  -b [email protected] [email protected]

Here in this example, root is sending email to [email protected] and putting [email protected] as Cc address and [email protected] as Bcc.

Send Mail as Bcc in Terminal
Send Mail as CC or BCC in Terminal
Send Emails with Attachments

We can send email from command line with attachments by using “-a” option with mutt command.

[root@tecmint ~]# mutt  -s "Subject of Mail" -a <path of  attachment file> -c <email address of CC>  mail address of recipient
[root@tecmint ~]# mutt -s "Site Backup" -a /backups/backup.tar  -c [email protected] [email protected]
Send Email Attachment from Command LIne
Send Email Attachment from Terminal

Here in above snapshot, you can see that it shows attachment attached with the mail.

Use of muttrc file

If we want to change the senders name and email, then we need to Create a file in that particular user’s home directory.

[root@tecmint ~]# cat .muttrc

Add the following lines to it. Save and close it.

set from = "[email protected]"
set realname = "Realname of the user"
Getting Help

To print the help menu of “mutt”, we need to specify “-h” option with it.

[root@tecmint ~]# mutt -h

Mutt 1.4.2.2i (2006-07-14)
usage: mutt [ -nRyzZ ] [ -e <cmd> ] [ -F <file> ] [ -m <type> ] [ -f <file> ]
       mutt [ -nx ] [ -e <cmd> ] [ -a <file> ] [ -F <file> ] [ -H <file> ] 
       mutt [ -i <file> ] [ -s <subj> ] [ -b <addr> ] [ -c <addr> ] <addr> [ ... ]
       mutt [ -n ] [ -e <cmd> ] [ -F <file> ] -p -v[v]
options:
  -a <file>     attach a file to the message
  -b <address>  specify a blind carbon-copy (BCC) address
  -c <address>  specify a carbon-copy (CC) address
  -e <command>  specify a command to be executed after initialization
  -f <file>     specify which mailbox to read
  -F <file>     specify an alternate muttrc file
  -H <file>     specify a draft file to read header from
  -i <file>     specify a file which Mutt should include in the reply
  -m <type>     specify a default mailbox type
  -n            causes Mutt not to read the system Muttrc
  -p            recall a postponed message
  -R            mailbox in read-only mode
  -s <subj>     specify a subject (must be in quotes if it has spaces)
  -v            show version and compile-time definitions
  -x            simulate the mailx send mode
  -y            select a mailbox specified in your `mailboxes' list
  -z            exit immediately if there are no messages in the mailbox
  -Z            open the first folder with new message, exit immediately if none
  -h            this help message

This is it with mutt command for now, read man pages of mutt for more information on mutt command.

Tarunika Shrivastava
I am a linux server admin and love to play with Linux and all other distributions of it. I am working as System Engineer with a Web Hosting Company.

Each tutorial at TecMint is created by a team of experienced Linux system administrators so that it meets our high-quality standards.

Join the TecMint Weekly Newsletter (More Than 156,129 Linux Enthusiasts Have Subscribed)
Was this article helpful? Please add a comment or buy me a coffee to show your appreciation.

39 thoughts on “Mutt – A Command Line Email Client to Send Mails from Terminal”

  1. Please help me with the attachment type supported in the mutt package.

    mutt -a 
    

    viz. binary files, printable ASCII characters, or both. I am facing an issue with Base64, however with uuencode not facing any difficulty.

    I have a constraint for not applying the BASE 64 package in my AIX machine.

    Reply
    • @Anoop,

      Mutt supports various attachment types, including binary files and printable ASCII characters. However, the encoding method you choose can impact compatibility and ease of use.

      Here are a couple of suggestions:

      1. The -a flat is used to attach files to an email, but if you are facing issues with Base64, you might consider explicitly specifying the encoding using the -e flag.

      mutt -a file.txt -e "application/octet-stream"
      

      2. Since you mentioned that uuencode is working without difficulty, you can consider using it as an alternative encoding method for your attachments. Adjust your Mutt command accordingly:

      mutt -a file.txt -e "application/octet-stream" -- -x 'uuencode %s %s'
      
      Reply
  2. with gmail default settings under accounts (apps with account access/allow less secure apps – OFF), how can i send mail to gmail.

    Reply
    • @Jai,

      You don’t need to On/Off default settings of Gmail, just have correct DNS MX record in place for your domain to send mails out using mutt command.

      Reply
  3. 1) Hi team i read in the notes above that in command line or code where i am calling mutt for sending mail, if i need to change my sender id i need to update the .muttrc file at ~/.muttrc, can you confirm if my understanding is correct and it is the only option available ? If that is the only option can you share the tag name which needs to be used to update the sender id.

    2) Do we have any option which we can use to have a different replyto option ? i read option ‘t‘ is available to change the recipient address, can you help to confirm on this.

    Reply
    • @Mikhil,

      Yes ~/.muttrc only file, where you can specify user related configuration and about replyto option, I never used it, but you should give a try and see..

      Reply
  4. Hi,

    I am new to Linux, trying to learn how to Linux command line. I just got to play with “mutt” mail utility but somehow when I wanted to delete an email (after “mutt” mail displayed a list of mails) I could not delete it (Google says: “tag” before removing) I can not “tag” the one that I wanted to remove. Can anyone help ?

    Thank you very much

    Reply
  5. Hi,

    When you enter the above command in the terminal, it opens up with an interface and confirms the recipient address and subject of the mail and opens up the interface, here you can make changes to recipient mail address.

    But i don’t want this interface to come up. Actually i am try to write a script to send email for every 2 hours automatically but mutt is not usable for my requirement as manual inputs are required for each time.

    Please help to share the option .

    Thanks,
    Venu.M

    Reply
  6. First of all, this site has been very helpful to me. Thank you.

    Issue:
    I have a script file that reads:

    set realname="Client Name”
    set from = "[email protected]"
    set use_from=yes
    set envelope_from ="yes"
    

    At the receiving end, the email address ([email protected]) works great whether you click on it in the header or if you use REPLY.
    Where it fails is if you send it to an invalid address. It does not let you know it failed.

    Is there another something I should set? A SENDER setting?

    If I send it to [email protected] I get no notification that the email could not be delivered. I do if I send it from my personal address, so I know that there isn’t really a [email protected].

    My client needs to know if their invoices and statements are not being received.

    Any help would be greatly appreciated.

    Reply
  7. Is it possible to send mail with attachment in command line?

    Now when I, for example, put in “mutt -s “Test Email[email protected] after that see mutt interface where I have to confirm many things. I don’t want it.

    I need an application which send me an email with an attachment from a command line without any confirmation. Only one command, enter and nothing more

    Reply
  8. I want to send the report of more than 400k records in CSV as an attachment but ‘mutt’ is not working, could you please help me in this.

    Reply
  9. How do I send a text message where mutt does not add any additional information ? I can use SMS gateways just fine, the problem is that when I use a Linux command of the form: echo “text” | mutt [email protected], the text that comes through is of the form, text. I need it to only be “text”.

    Reply
  10. hI,

    When I sent a mail from my Linux box, with

    mutt \
    -e ‘my_hdr Content-Type: text/html’ \
    -s “${NOW} Controle File-Set SnapShots and Replications (${SUBJ})” \
    -a “/rbm/scr/rbm_check_snap_repl_legenda.html” ${TO_ADDR}

    I get the attachment as inline in my outlook 365 mail. The legenda file I mean.

    –liOOAslEiF7prFVr Content-Type: text/plain; charset=us-ascii Content-Disposition: inline
    V7000 File-System
    rbndtcv7k lnx_nfs_appldev_002 512G 15G 3% 498G
    –liOOAslEiF7prFVr Content-Type: text/html; charset=us-ascii Content-Disposition: attachment; filename=”rbm_check_snap_repl_legenda.html”
    Legenda: icTwa
    ect
    –liOOAslEiF7prFVr–

    What do I have to do, to get an real attachment in outlook 365

    Gr,Tom

    Reply
  11. Can mutt be used to send mail to more than one person in bcc and cc?
    If yes , is the delimiter? It was not working for me.

    Reply
  12. i tested this on Ubuntu 12.04 LTS server. It works perfectly. Thanks a lot for the great article,keep it up!

    Reply
  13. this all things are nice, thanks for all
    i am new for centos 6.4,6.5 server but i allways follow your website for my work. thank you all of you.

    Reply

Leave a Reply to niraj Cancel reply

Thank you for taking the time to share your thoughts with us. We appreciate your decision to leave a comment and value your contribution to the discussion. It's important to note that we moderate all comments in accordance with our comment policy to ensure a respectful and constructive conversation.

Rest assured that your email address will remain private and will not be published or shared with anyone. We prioritize the privacy and security of our users.