Skip to content
This repository

This is a *MIRROR* of the OpenSMTPD repository, but feel free to fork and submit pull requests !

branch: master
README.md

Preliminary note

OpenSMTPD is a FREE implementation of the server-side SMTP protocol as defined by RFC 5321, with some additional standart extensions.

It allows ordinary machines to exchange e-mails with other systems speaking the SMTP protocol.

OpenSMTPD runs on top of the OpenBSD operating system but also has a portable version that can build and run on several systems, including:

  • Linux
  • FreeBSD
  • NetBSD
  • DragonFly
  • MacOSX

For more information: http://www.opensmtpd.org/portable.html

People interested about OpenSMTPD are encouraged to subscribe to our mailing list: http://www.opensmtpd.org/list.html

and to join the IRC channel: #OpenSMTPD @ irc.freenode.net

Cheers !

How to build, configure and use Portable OpenSMTPD

Dependencies

Portable OpenSMTPD relies on:

Get the source

git clone -b portable git://github.com/poolpOrg/OpenSMTPD.git opensmtpd

or

wget http://www.opensmtpd.org/archives/opensmtpd-portable-latest.tar.gz
tar xzvf opensmtpd-portable-latest.tar.gz

Build

cd opensmtpd*
./bootstrap  
./configure  
make  
sudo make install  

Special notes for FreeBSD/DragonFlyBSD/Mac OS X:

Please launch configure with special directive about libevent directory:

FreeBSD:

./configure --with-libevent-dir=/usr/local

DragonFlyBSD:

./configure --with-libevent-dir=/usr/pkg

Mac OS X:

./configure --with-libevent-dir=/opt/local
make CFLAGS="-DBIND_8_COMPAT=1"

Install

sudo make install    

Configure /etc/smtpd.conf

Please have a look at the complete format description of smtpd.conf configuration file

Add OpenSMTPD users

To operate, OpenSMTPD requires at least one user, by default _smtpd; and preferably three users, by default _smtpd, _smtpq and _smtpf.

The instructions below assume the default users however, the configure script allows overriding these using the options: --with-privsep-user, --with-queue-user and --with-filter-user.

NetBSD, Linux (Debian, ArchLinux, ...)

mkdir /var/empty  
useradd -c "SMTP Daemon" -d /var/empty -s /sbin/nologin _smtpd
useradd -c "SMTP queue user" -d /var/empty -s /sbin/nologin _smtpq
useradd -c "SMTP filter user" -d /var/empty -s /sbin/nologin _smtpf

DragonFlyBSD, FreeBSD

pw useradd _smtpd -c "SMTP Daemon" -d /var/empty -s /sbin/nologin
pw useradd _smtpq -c "SMTP queue user" -d /var/empty -s /sbin/nologin
pw useradd _smtpf -c "SMTP filter user" -d /var/empty -s /sbin/nologin

Mac OS X

First we need a group with an unused GID below 500, list the current ones used:

/usr/bin/dscl . -list /Groups PrimaryGroupID | sort -n -k2,2

Add a group - here we have picked 444:

/usr/bin/sudo /usr/bin/dscl . -create /Groups/_smtpd PrimaryGroupID 444

Then the user. Again we need an unused UID below 500, list the current ones used:

/usr/bin/dscl . -list /Users UniqueID | sort -n -k2,2

Add a user - here we have picked 444:

/usr/bin/sudo /usr/bin/dscl . -create /Users/_smtpd UniqueID 444
/usr/bin/sudo /usr/bin/dscl . -delete /Users/_smtpd AuthenticationAuthority
/usr/bin/sudo /usr/bin/dscl . -delete /Users/_smtpd PasswordPolicyOptions
/usr/bin/sudo /usr/bin/dscl . -delete /Users/_smtpd dsAttrTypeNative:KerberosKeys
/usr/bin/sudo /usr/bin/dscl . -delete /Users/_smtpd dsAttrTypeNative:ShadowHashData
/usr/bin/sudo /usr/bin/dscl . -create /Users/_smtpd RealName "SMTP Daemon"
/usr/bin/sudo /usr/bin/dscl . -create /Users/_stmpd Password "*"
/usr/bin/sudo /usr/bin/dscl . -create /Users/_smtpd PrimaryGroupID 444
/usr/bin/sudo /usr/bin/dscl . -create /Users/_smtpd NFSHomeDirectory /var/empty
/usr/bin/sudo /usr/bin/dscl . -create /Users/_smtpd UserShell /usr/bin/false

repeat for the _smtpq and _smtpf users.

Launch smtpd

First, kill any running sendmail/exim/qmail/postfix or other.

Then:

smtpd &

or in debug and verbose mode

smtpd -dv
Something went wrong with that request. Please try again.