Last modified: Dec. 9, 2012
Contents
1 - Summary
2 - Dependencies
3 - Msmtp installation
4 - Msmtp configuration
5 - Example shell script
1 - Summary
This guide will show you how to send emails for system events using msmtp with
TLS/SSL capabilities in OpenBSD. Msmtp is an SMTP client used to send email.
This has been tested in OpenBSD 5.2 i386.
2 - Dependencies
I've created a shell script that can search the list of available packages.
#!/bin/sh
# This script will look for packages with the search term.
echo=/bin/echo
lynx=/usr/bin/lynx
pkg_path=ftp://ftp.openbsd.org/pub/OpenBSD/$rel/packages/$arch/index.txt
tr=/usr/bin/tr
cut=/usr/bin/cut
grep=/usr/bin/grep
if [ $# -ne 1 ]
then
exit 0
else
# check if a valid parameter
if [ "$1" == "-help" ]
then
$echo Usage: pkg_find [string]
else
$lynx -dump $pkg_path | $tr -s " " | $cut -d " " -f 10 | $grep -i $1
fi
fi
exit 0
# cd ~
# vi pkg_find
# sudo chown root:bin pkg_find
Password:
# sudo chmod 555 pkg_find
Password:
# sudo mv pkg_find /usr/sbin/
Password:
Here is an example of what it can do.
# pkg_find -help
Usage: pkg_find [string]
# pkg_find msmtp
clamsmtp-*.tgz
msmtp-*.tgz
Install the following packages.
# pkg_find p5-Crypt-SSLeay
p5-Crypt-SSLeay-*.tgz
# sudo pkg_add p5-Crypt-SSLeay-*.tgz
Password:
# pkg_find p5-LWP-UserAgent-Determined
p5-LWP-UserAgent-Determined-*.tgz
# sudo pkg_add p5-LWP-UserAgent-Determined-*.tgz
Password:
# pkg_find libidn
libidn-*.tgz
# sudo pkg_add libidn-*.tgz
Password:
# pkg_find wget
wget-*.tgz
# sudo pkg_add wget-*.tgz
Password:
Find where the wget binary was installed to.
# pkg_info -L wget-* | grep bin
/usr/local/bin/wget
Run ldd to display the shared objects (.so) needed to run the wget binary. If
there are any shared objects in /usr/local you will need to run ldconfig.
# ldd /usr/local/bin/wget
/usr/local/bin/wget:
Start End Type Open Ref GrpRef Name
1c000000 3c028000 exe 1 0 0 /usr/local/bin/wget
0b2a4000 2b2af000 rlib 0 1 0 /usr/lib/libssl.so.18.0
0fed4000 2ff11000 rlib 0 1 0 /usr/lib/libcrypto.so.20.1
0652c000 26533000 rlib 0 1 0 /usr/lib/libz.so.4.1
0cf72000 2cf9e000 rlib 0 1 0 /usr/local/lib/libidn.so.17.0
0d6ed000 2d6f1000 rlib 0 2 0 /usr/local/lib/libintl.so.6.0
0451f000 245ff000 rlib 0 2 0 /usr/local/lib/libiconv.so.6.0
0762a000 27658000 rlib 0 1 0 /usr/lib/libc.so.65.0
0ee1e000 0ee1e000 rtld 0 1 0 /usr/libexec/ld.so
# sudo ldconfig /usr/lib /usr/local/lib
Password:
# wget --no-check-certificate https://github.com/bagder/curl/raw/master/lib/mk-ca-bundle.pl
# perl mk-ca-bundle.pl
# sudo chown root:wheel ca-bundle.crt
Password:
# sudo chmod 555 ca-bundle.crt
Password:
# sudo mv ca-bundle.crt /etc/
Password:
# rm -f certdata.txt mk-ca-bundle.pl
3 - Msmtp installation
Install the msmtp package.
# pkg_find msmtp
clamsmtp-*.tgz
msmtp-*.tgz
# sudo pkg_add msmtp-*.tgz
Password:
4 - Msmtp configuration
Find where the msmtp binary was installed to.
# pkg_info -L msmtp-* | grep bin
/usr/local/bin/msmtp
Find where the configuration file should be put.
# msmtp --version | grep 'System configuration'
System configuration file name: /etc/msmtprc
# pkg_info -L msmtp-* | grep msmtprc
/usr/local/share/examples/msmtp/msmtprc-system.example
/usr/local/share/examples/msmtp/msmtprc-user.example
You can create your own configuration file. Here is an example that uses a
Gmail account which utilizes TLS.
account default
host smtp.googlemail.com
port 587
from testuser@gmail.com
tls on
tls_starttls on
tls_trust_file /etc/ca-bundle.crt
auth on
user testuser@gmail.com
password **********
syslog LOG_MAIL
# sudo vi /etc/msmtprc
Password:
# sudo chmod 600 /etc/msmtprc
Password:
5 - Example shell script
Here is an example shell script that sends an email.
#!/bin/sh
hostname=/bin/hostname
host=`$hostname -s`
date=/bin/date
current_day=`$date +%m/%d/%y`
current_time=`$date +%H:%M:%S`
printf=/usr/bin/printf
from="testuser@gmail.com"
recipient="testuser@test.com"
#recipient="testuser1@test.com,testuser2@test.com"
msmtp=/usr/local/bin/msmtp
msmtp_config=/etc/msmtprc
body="This is a test."
subject="Test sent from $host [$current_day $current_time]"
$printf "From: $from\nTo: $recipient\nSubject: $subject\n\n$body" | $msmtp --file=$msmtp_config -t
exit 0
|