1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
|
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](http://www.opensmtpd.org/portable.html)
People interested about OpenSMTPD are encouraged to subscribe to our mailing
list: [http://www.opensmtpd.org/list.html](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:
* [autoconf](http://www.gnu.org/software/autoconf/)
* [automake](http://www.gnu.org/software/automake/)
* [Berkeley DB](http://www.oracle.com/technetwork/products/berkeleydb/overview/index.html)
* [bison](http://www.gnu.org/software/bison/) (or [byacc](http://invisible-island.net/byacc/byacc.html))
* [libevent](http://libevent.org/)
* [libtool](http://www.gnu.org/software/libtool/)
* [openssl](http://www.openssl.org/)
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](http://opensmtpd.org/smtpd.conf.5.html)
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
|