| Both sides previous revision Previous revision Next revision | Previous revision Next revisionBoth sides next revision |
| docs:guide-user:services:email:smtp.client [2022/12/03 21:00] – [Table] xxiao | docs:guide-user:services:email:smtp.client [2024/10/14 22:52] – typo fix bartprokop |
|---|
| ===== Overview ===== | ===== Overview ===== |
| |
| The table below is based on Chaos Calmer (15.05). | The table shows all clients ported to OpenWrt: |
| |
| ^ Name ^ Version ^ Dependencies ^ Size ^ Features ^ | ^ Name ^ Version ^ Dependencies ^ Size ^ Features ^ |
| | [[docs:techref:busybox|BusyBox]] sendmail | 1.33 //must be compiled// | //libopenssl// | 14 kb | SSL, smarthost only, sendmail-compatible, SMTP auth | | | [[docs:techref:busybox|BusyBox]] sendmail | 1.33 //must be compiled// | //libopenssl// | 14KB | SSL, smarthost only, sendmail-compatible, SMTP auth | |
| | [[packages:pkgdata:msmtp|msmtp]] | 1.6.2-1 | //libgnutls// | 37785 | SSL, smarthost only, sendmail-compatible, SMTP auth | | | [[packages:pkgdata:msmtp]] | 1.8 | //libgnutls// | 51KB | SSL, smarthost only, sendmail-compatible, SMTP auth | |
| | msmtp-nossl | 1.6.2-1 | | 33503 | smarthost only, sendmail-compatible, SMTP auth | | | [[packages:pkgdata:msmtp-nossl]] | 1.8 | | 47KB | smarthost only, sendmail-compatible, SMTP auth | |
| | mailsend | 1.17b15-2 | //libopenssl// | 36679 | SSL, smarthost only, no configuration required, MIME, attachements, IPv6, SMTP auth | | | [[packages:pkgdata:mailsend]] | 1.19 | //libopenssl// | 39KB | SSL, smarthost only, no configuration required, MIME, attachements, IPv6, SMTP auth | |
| | mailsend-nossl | 1.17b15-2 | | 34865 | smarthost only, no configuration required, MIME, attachements, IPv6, SMTP auth | | | [[packages:pkgdata:mailsend-nossl]] | 1.19 | | 37KB | smarthost only, no configuration required, MIME, attachements, IPv6, SMTP auth | |
| | ssmtp | 2.64-1.1 | //libopenssl// | 11669 | SSL support, smarthost only, SMTP auth, no longer available since OpenWRT 21.02 | | | [[packages:pkgdata_owrt18_6:ssmtp]] | 2.64 | //libopenssl// | 11KB | SSL support, smarthost only, SMTP auth. No longer available since OpenWRT 21 | |
| | mini-sendmail | //package not present// | | 4726 | smarthost only, no configuration required | | | mini-sendmail | //no package// | | 5KB | smarthost only, no configuration required. No longer available since OpenWRT 17 | |
| | [[packages:pkgdata:emailrelay|emailrelay]] | 1.9-5 | //libc// //libssp// //libopenssl// //libstdcpp// | 316 | simple SMTP proxy and store-and-forward message transfer agent (MTA); can be used similar to postfix with mail queue in combination with msmtp and mutt | | | [[packages:pkgdata:emailrelay]] | 2.3 | //libc// //libssp// //libopenssl// //libstdcpp// | 350KB | SMTP proxy and store-and-forward message transfer agent (MTA); can be used similar to postfix with mail queue in combination with msmtp and mutt. In v2.5 can deliver mail directly. See [[:docs:guide-user:services:email:emailrelay]] | |
| | [[docs:guide-user:services:email:xmail|XMail ]] | //package isn't present but available for compile // | //libopenssl// | | | | | [[docs:guide-user:services:email:xmail|XMail ]] | //no package// | //libopenssl// | | | |
| |
| "smarthost only" means that the program is only capable to send email through a configured "smarthost", that is, it cannot directly deliver to the destination SMTP server. | "smarthost only" means that the program is only capable to send email through a configured "smarthost", that is, it cannot directly deliver to the destination SMTP server. E.g. it won't make a DNS lookup of the email address for MX record. |
| |
| ===== Using mailsend ===== | ===== Using mailsend ===== |
| Being quite lightweight and not requiring any configuration, mailsend is ideal for sending mails in shell scripts. | Being quite lightweight and not requiring any configuration, mailsend is ideal for sending mails in shell scripts. |
| |
| | [[https://github.com/muquit/mailsend]] - Sources and issues |
| ==== Installation ==== | ==== Installation ==== |
| |
| Depending on whether you want SSL support or not (actually, the size of libopenssl will probably be the decisive factor), install one of the two versions: | Depending on whether you want SSL support or not (actually, the size of libopenssl will probably be the decisive factor), install one of the two versions: |
| |
| <code>opkg install mailsend</code> | <code> |
| <code>opkg install mailsend-nossl</code> | opkg install mailsend |
| | opkg install mailsend-nossl |
| | </code> |
| |
| ==== Usage ==== | ==== Usage ==== |
| |
| Since msmtp understands standard sendmail options, it can be used in places where sendmail is expected (e.g. PHP code). | Since msmtp understands standard sendmail options, it can be used in places where sendmail is expected (e.g. PHP code). |
| | |
| | [[https://marlam.de/msmtp/|Official site]] - Sources and documentation |
| |
| ==== Installation ==== | ==== Installation ==== |
| <code>opkg install msmtp</code> | <code>opkg install msmtp-mta</code> |
| | Installing ''%%msmtp-mta%%'' package will also create necessary ''%%sendmail%%'' symlink. If you do not need ''%%sendmail%%'' command (unlikely) then install only ''%%msmtp%%'' package. |
| |
| ==== Configuration ==== | ==== Configuration ==== |
| | For router configuration, you very likely do not want to receive emails to local mailboxes. Define aliases file ''%%/etc/aliases.msmtp%%'' to send all local mails to your admin email: |
| | |
| | <code> |
| | default: admin@example.com |
| | </code> |
| | |
| Place your configuration in ''%%/etc/msmtprc%%''. There is an existing ''%%default%%''-block in the included config file so if you want to call ''%%msmtp%%'' without specifying an account, then you need to rename the existing ''%%default%%''-block to something else. | Place your configuration in ''%%/etc/msmtprc%%''. There is an existing ''%%default%%''-block in the included config file so if you want to call ''%%msmtp%%'' without specifying an account, then you need to rename the existing ''%%default%%''-block to something else. |
| |
| |
| defaults | defaults |
| | aliases /etc/aliases.msmtp |
| | |
| account default | account default |
| |
| </code> | </code> |
| |
| Now symlink ''%%msmtp%%'' to ''%%sendmail%%'' with ''%%ln -s /usr/bin/msmtp /usr/sbin/sendmail%%''. | Now symlink ''%%msmtp%%'' to ''%%sendmail%%'' with ''%%ln -s /usr/bin/msmtp /usr/sbin/sendmail%%'' - this is not necessary if ''%%msmtp-mta%%'' was installed instead of ''%%msmtp%%''. |
| | |
| | Also you may configure env variables ''EMAIL'' for From address and ''SMTPSERVER'' to specify smarthost. |
| ==== Sending mail ==== | ==== Sending mail ==== |
| <code>echo -e "Subject: Test mail\n\nThis is a test \"message\"." | sendmail -f "<something@your-domain.tld>" "<recipient@destination.tld>"</code> | <code> |
| | echo -e "Subject: Test mail\n\nThis is a test \"message\"." | sendmail -f "<something@your-domain.tld>" "<recipient@destination.tld>" |
| | </code> |
| |
| Note that //sendmail// (''%%/usr/sbin/sendmail%%'') is a symlink to ''%%/usr/bin/msmtp%%''. | Note that //sendmail// (''%%/usr/sbin/sendmail%%'') is a symlink to ''%%/usr/bin/msmtp%%''. |
| | mini-sendmail | 1.3.6-4 | //none// | 5866 | mini_sendmail reads its standard input up to an end-of-file and sends a copy of the message found there to all of the addresses listed. The message is sent by connecting to a local SMTP server. This means ''mini_sendmail'' can be used to send email from inside a chroot(2) area. | | | mini-sendmail | 1.3.6-4 | //none// | 5866 | mini_sendmail reads its standard input up to an end-of-file and sends a copy of the message found there to all of the addresses listed. The message is sent by connecting to a local SMTP server. This means ''mini_sendmail'' can be used to send email from inside a chroot(2) area. | |
| |
| | [[https://acme.com/software/mini_sendmail/|Official site]] |
| ==== Installation and Configuration ==== | ==== Installation and Configuration ==== |
| |
| On Chaos Calmer, the package is no longer available, but the version from Barrier Breaker still works (AA & BB versions as installed below work in AA): | On Chaos Calmer, the package is no longer available, but the version from Barrier Breaker still works (AA & BB versions as installed below work in AA): |
| |
| <code>opkg install http://downloads.openwrt.org/barrier_breaker/14.07/ar71xx/generic/packages/oldpackages/mini-sendmail_1.3.6-4_ar71xx.ipk</code> | <code> |
| | opkg install http://downloads.openwrt.org/barrier_breaker/14.07/ar71xx/generic/packages/oldpackages/mini-sendmail_1.3.6-4_ar71xx.ipk |
| | </code> |
| |
| ==== Example ==== | ==== Example ==== |
| |<code bash> | <code bash> |
| mini_sendmail -ssmtp.mail.yahoo.com -p465 -t foo@example.com < input_file | mini_sendmail -ssmtp.mail.yahoo.com -p465 -t foo@example.com < input_file |
| |
| usage: mini_sendmail [-f<name>] [-t] [-s<server>] [-p<port>] [-T<timeout>] [-v] [address ...] | usage: mini_sendmail [-f<name>] [-t] [-s<server>] [-p<port>] [-T<timeout>] [-v] [address ...] |
| </code> | | </code> |
| |
| Note that there must not be a space between the option and the value; e.g. "-p 465" is incorrect. | Note that there must not be a space between the option and the value; e.g. "-p 465" is incorrect. |
| |
| Several sample configurations found on the internet failed, but as of 160413, this worked | Several sample configurations found on the internet failed, but as of 160413, this worked |
| |<code bash> | <code bash> |
| echo -e 'From: valid@email.com\r\nSubject: Test Subject\r\n\r\nTesting\r\n.' | mini_sendmail -fvalid@email.com -smail.brighthouse.com toAddr@gmail.com | echo -e 'From: valid@email.com\r\nSubject: Test Subject\r\n\r\nTesting\r\n.' | mini_sendmail -fvalid@email.com -smail.brighthouse.com toAddr@gmail.com |
| </code> | | </code> |
| smtp.gmail.com failed; omitting -f failed; omitting "From: " resulted in transmission, but no sender shown. | smtp.gmail.com failed; omitting -f failed; omitting "From: " resulted in transmission, but no sender shown. |
| |
| This is a very small package if you can find an smtp server which works and you can configure the command so that the server accepts it. | This is a very small package if you can find an smtp server which works and you can configure the command so that the server accepts it. |
| | |
| ===== Using ssmtp ===== | ===== Using ssmtp ===== |
| | |
| | [[https://tracker.debian.org/pkg/ssmtp|Official site]] |
| |
| ==== Description ==== | ==== Description ==== |
| ssmtp expects its two configuration files named ''/etc/ssmtp/revaliases'' and ''/etc/ssmtp/ssmtp.conf''. Both are self-explaining: | ssmtp expects its two configuration files named ''/etc/ssmtp/revaliases'' and ''/etc/ssmtp/ssmtp.conf''. Both are self-explaining: |
| |
| |<code> | <code> |
| # /etc/ssmtp/ssmtp.conf | # /etc/ssmtp/ssmtp.conf |
| root=arnold@gmx.net | root=arnold@gmx.net |
| UseTLS=YES | UseTLS=YES |
| #UseSTARTTLS=YES | #UseSTARTTLS=YES |
| </code>| | </code> |
| |
| |<code> | <code> |
| # /etc/ssmtp/revaliases | # /etc/ssmtp/revaliases |
| # Format: local_account:outgoing_address:mailhub | # Format: local_account:outgoing_address:mailhub |
| root:arnold@gmx.net:mail.gmx.net:465 | root:arnold@gmx.net:mail.gmx.net:465 |
| </code>| | </code |
| |
| To use the program, with SMTP auth: | To use the program, with SMTP auth: |
| <code bash> | <code bash> |
| cat /etc/banner | ssmtp -vvv -auultranerd@universum.tb -ap123password456 someguy@gmx.net | cat /etc/banner | ssmtp -vvv -auultranerd@universum.tb -ap123password456 someguy@gmx.net |
| </code>| | </code> |
| | |
| | |
| | ===== Using BusyBox sendmail ===== |
| | |
| | - [[https://busybox.net/downloads/BusyBox.html#sendmail|Documentation]] |
| | - [[https://git.busybox.net/busybox/tree/mailutils/sendmail.c|Sources]] |
| | |
| | ==== Description ==== |
| | |
| | The BusyBox sendmail is a smallest possible implementation but it must be compiled. It works only in smarthost mode. |
| | |
| | ==== Installation ==== |
| | |
| | Enable the applet during compilation in menuconfig: ''BusyBox options'', ''Mail'' and ''sendmail''. |
| | Additionally you may want to enable [[https://busybox.net/downloads/BusyBox.html#makemime|makemime]] applet that helps to send files with attachments. |
| | |
| | ==== Usage ==== |
| | You need to configure ''SMTPHOST'' env variable with the smarthost SMTP server to use. |
| | Instead of the variable you may use an option ''-S server[:port]'' to specify the SMTP server. |
| | |
| | You may also need ''SMTP_ANTISPAM_DELAY'' env to bypass the Greylisting antispam if it enabled for submission. |
| | |