UNPKG

arch-wiki-md-repo

Version:

All arch-wiki articles in markdown format, updated every two days.

183 lines (118 loc) 7.42 kB
Related articles * [OpenSMTPD](/index.php/OpenSMTPD "OpenSMTPD") * [msmtp](/index.php/Msmtp "Msmtp") * [S-nail](/index.php/S-nail "S-nail") SSMTP is a program which delivers email from a local computer to a configured mailhost (mailhub). It is not a mail server (like feature-rich mail server [sendmail](/index.php/Sendmail "Sendmail")) and does not receive mail, expand aliases or manage a queue. One of its primary uses is for forwarding automated email (like system alerts) off your machine and to an external email address. **Note:** ssmtp is unmaintained. Consider using something like [msmtp](/index.php/Msmtp "Msmtp") or [OpenSMTPD](/index.php/OpenSMTPD "OpenSMTPD") instead. ## Contents * [1 Installation](#Installation) * [2 Forward to a Gmail mail server](#Forward_to_a_Gmail_mail_server) * [3 Security](#Security) * [4 Sending email](#Sending_email) * [4.1 Attachments](#Attachments) * [4.2 Mail to Local Users](#Mail_to_Local_Users) * [5 References](#References) ## Installation [Install](/index.php/Install "Install") the package [ssmtp](https://www.archlinux.org/packages/?name=ssmtp). ## Forward to a Gmail mail server To configure SSMTP, you will have to edit its configuration file (`/etc/ssmtp/ssmtp.conf`) and enter your account settings. * If your Gmail account is secured with two-factor authentication, you need to generate a unique [App Password](https://support.google.com/mail/answer/185833) to use in `ssmtp.conf`. You can do so on your [App Passwords](https://myaccount.google.com/apppasswords) page. Use the generated 16-character password in the `AuthPass` line. Spaces in the password can be omitted. * If you do *not* use two-factor authentication, you need to [allow access to unsecure apps](https://support.google.com/accounts/answer/6010255). You can do so on your [Less Secure Apps](https://myaccount.google.com/lesssecureapps) page. `/etc/ssmtp/ssmtp.conf` ``` # The user that gets all the mails (UID < 1000, usually the admin) root=username@gmail.com # The mail server (where the mail is sent to), both port 465 or 587 should be acceptable # See also https://support.google.com/mail/answer/78799 mailhub=smtp.gmail.com:587 # The address where the mail appears to come from for user authentication. rewriteDomain=gmail.com # The full hostname. Must be correctly formed, fully qualified domain name or GMail will reject connection. hostname=yourlocalhost.yourlocaldomain.tld # Use SSL/TLS before starting negotiation UseTLS=Yes UseSTARTTLS=Yes # Username/Password AuthUser=username AuthPass=password AuthMethod=LOGIN # Email 'From header's can override the default domain? FromLineOverride=yes ``` **Note:** Take note, that the shown configuration is an example for Gmail, You may have to use other settings. If it is not working as expected read the man page [ssmtp(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ssmtp.8), please. Create aliases for local usernames (optional) `/etc/ssmtp/revaliases` ``` root:username@gmail.com:smtp.gmail.com:587 mainuser:username@gmail.com:smtp.gmail.com:587 ``` To test whether the Gmail server will properly forward your email: `$ echo -n 'Subject: test Testing ssmtp' | sendmail -v tousername@example.com` Change the 'From' text by editing `/etc/passwd` to receive mail from 'root at myhost' instead of just 'root'. ``` # chfn -f 'root at myhost' root # chfn -f 'mainuser at myhost' mainuser ``` Which changes `/etc/passwd` to: `$ grep myhost /etc/passwd` ``` root:x:0:0:root at myhost,,,:/root:/bin/bash mainuser:x:1000:1000:mainuser at myhost,,,:/home/mainuser:/bin/bash ``` ## Security Because your email password is stored as cleartext in `/etc/ssmtp/ssmtp.conf`, it is important that this file is secure. By default, the entire `/etc/ssmtp` directory is accessible only by root and the mail group. The `/usr/bin/ssmtp` binary runs as the mail group and can read this file. There is no reason to add yourself or other users to the mail group. ## Sending email To send email from the terminal, do: ``` $ echo -e "Subject: this is the subject this is the body" | mail user@example.com ``` or interactively as: ``` $ sendmail username@example.com Subject: this is my subject CC: optional@example.com Now I can type the body here ``` **Note:** When using mail interactively, after typing the *Subject: subject* and other headers, hit enter twice, and then type the body. Hit `Ctrl`+`d` on a blank line to end your message and automatically send it out. An alternate method for sending emails is to create a text file and send it with *ssmtp* or *mail* `test-mail.txt` ``` To:username@example.com From:youraccount@gmail.com Subject: Test This is a test mail. ``` Send the `test-mail.txt` file ``` $ sendmail -t < test-mail.txt ``` Some users might prefer the syntax of *mail* from [s-nail](https://www.archlinux.org/packages/?name=s-nail), [mailutils](https://www.archlinux.org/packages/?name=mailutils), or other *mailx* providers instead. For example, *mail* has options to provide the subject as an argument. *mail* requires *sendmail* and can use [ssmtp](https://www.archlinux.org/packages/?name=ssmtp) as *sendmail*. ### Attachments If you need to be able to add attachments, install and configure [Mutt](/index.php/Mutt "Mutt") and [Msmtp](/index.php/Msmtp "Msmtp") and then go see the tip at [nixcraft](http://www.cyberciti.biz/tips/sending-mail-with-attachment.html). Alternatively, you can attach using *uuencode* from [sharutils](https://www.archlinux.org/packages/?name=sharutils). To attach 'file.txt' as 'myfile.txt': ``` $ uuencode file.txt myfile.txt | sendmail user@example.com ``` ### Mail to Local Users Messages sent to local users (or any other address not ending in *@fqdn* are treated in one of two ways * destination user has UID < 1000 - The address is replaced by the address defined by `root=user@fqdn` in `/etc/ssmtp/ssmtp.conf` * destination user has UID ≥ 1000 or the user is unknown - The the value from `rewriteDomain=` in `/etc/ssmtp/ssmtp.conf` is appended to the end of the user id. This can lead to problems if local users on your system aren't also valid users at your `rewriteDomain`, but are receiving mail from system services, esp if your rewrite domain is a public service like `gmail.com`. To work around this, you can use *mail* from [s-nail](https://www.archlinux.org/packages/?name=s-nail). The *mail* command can read aliases defined in `/etc/mail.rc`. Example: `$ grep alias /etc/mail.rc` ``` alias git git<username@example.com> alias archuser 'My Name'<someone@example.com> ``` You can then pipe messages into *mail* instead of into *sendmail*. ``` $ echo -e "Hey archuser." | mail archuser ``` **Note:** You might be tempted to symlink *sendmail* to `/bin/mail`. Don't do this. *sendmail* and *mail* have different syntax for both arguments and standard input. It is better to find the processes that are using sendmail directly and configure them to use mail instead. ## References * [SSMTP and Gmail on the Arch forums](https://bbs.archlinux.org/viewtopic.php?pid=446831) * [Sending Email From Your System with sSMTP](http://tombuntu.com/index.php/2008/10/21/sending-email-from-your-system-with-ssmtp/) * [The Qnd Guide to ssmtp](http://www.scottro.net/qnd/qnd-ssmtp.html) * [GMail Support - Configuring other mail clients](https://support.google.com/mail/answer/78799)