New package: sqmail-4.0.03

This commit is contained in:
Leah Neukirchen 2020-02-29 23:23:34 +01:00 committed by Leah Neukirchen
parent 760b092a95
commit 757de27872
13 changed files with 453 additions and 0 deletions

156
srcpkgs/sqmail/INSTALL Normal file
View file

@ -0,0 +1,156 @@
case "${ACTION}" in
post)
# a shell version of hier.c
set -e
chownmod() { chown $1 $3 && chmod $2 $3; }
install -d -m0755 -o root -g _sqmail var/qmail
install -d -m0755 -o root -g _sqmail etc/qmail
install -d -m2755 -o _alias -g _sqmail etc/qmail/alias
install -d -m0755 -o root -g _sqmail etc/qmail/control
install -d -m0755 -o root -g _sqmail etc/qmail/users
install -d -m0700 -o _sqmtls -g _nofiles etc/qmail/ssl
install -d -m0750 -o _qmailq -g _sqmail var/qmail/queue
install -d -m0700 -o _qmailq -g _sqmail var/qmail/queue/pid
install -d -m0700 -o _qmailq -g _sqmail var/qmail/queue/intd
install -d -m0750 -o _qmailq -g _sqmail var/qmail/queue/todo
install -d -m0700 -o _qmails -g _sqmail var/qmail/queue/bounce
install -d -m0750 -o _qmailq -g _sqmail var/qmail/queue/mess
install -d -m0700 -o _qmails -g _sqmail var/qmail/queue/info
install -d -m0700 -o _qmails -g _sqmail var/qmail/queue/local
install -d -m0700 -o _qmails -g _sqmail var/qmail/queue/remote
for i in $(seq 0 22); do
install -d -m0750 -o _qmailq -g _sqmail var/qmail/queue/mess/$i
install -d -m0750 -o _qmailq -g _sqmail var/qmail/queue/todo/$i
install -d -m0700 -o _qmailq -g _sqmail var/qmail/queue/intd/$i
install -d -m0700 -o _qmails -g _sqmail var/qmail/queue/info/$i
install -d -m0700 -o _qmails -g _sqmail var/qmail/queue/local/$i
install -d -m0700 -o _qmails -g _sqmail var/qmail/queue/remote/$i
done
install -d -m0750 -o _qmailq -g _sqmail var/qmail/queue/lock
[ -f var/qmail/queue/lock/tcpto ] ||
dd if=/dev/zero bs=1024 count=1 status=none |
install -m0644 -o _qmailr -g _sqmail /dev/stdin var/qmail/queue/lock/tcpto
[ -f var/qmail/queue/lock/sendmutex ] ||
install -m0600 -o _qmails -g _sqmail /dev/null var/qmail/queue/lock/sendmutex
[ -p var/qmail/queue/lock/trigger ] || mkfifo var/qmail/queue/lock/trigger
chownmod _qmails:_sqmail 0622 var/qmail/queue/lock/trigger
chownmod _qmailq:_sqmail 4711 usr/bin/qmail-queue
chownmod root:_sqmail 0700 usr/bin/qmail-lspawn
chownmod root:_sqmail 0700 usr/bin/qmail-start
chownmod root:_sqmail 0711 usr/bin/qmail-getpw
chownmod root:_sqmail 0711 usr/bin/qmail-local
chownmod root:_sqmail 0711 usr/bin/qmail-remote
chownmod root:_sqmail 0711 usr/bin/qmail-smtpam
chownmod root:_sqmail 0711 usr/bin/qmail-rspawn
chownmod root:_sqmail 0711 usr/bin/qmail-clean
chownmod root:_sqmail 0711 usr/bin/qmail-send
chownmod root:_sqmail 0711 usr/bin/qmail-todo
chownmod root:_sqmail 0711 usr/bin/splogger
chownmod root:_sqmail 0700 usr/bin/qmail-newu
chownmod root:_sqmail 0700 usr/bin/qmail-newmrh
chownmod root:_sqmail 6711 usr/bin/qmail-authuser
chownmod root:_sqmail 6711 usr/bin/qmail-vmailuser
chownmod root:_sqmail 0711 usr/bin/qmail-badloadertypes
chownmod root:_sqmail 0711 usr/bin/qmail-badmimetypes
chownmod root:_sqmail 0711 usr/bin/qmail-recipients
chownmod root:_sqmail 0711 usr/bin/qmail-mfrules
chownmod root:_sqmail 0755 usr/bin/qmail-mrtg
chownmod root:_sqmail 0755 usr/bin/qmail-mrtg-queue
chownmod root:_sqmail 0711 usr/bin/qmail-pw2u
chownmod root:_sqmail 0755 usr/bin/qmail-inject
chownmod root:_sqmail 0755 usr/bin/qmail-showctl
chownmod root:_sqmail 0755 usr/bin/qmail-qread
chownmod root:_sqmail 0755 usr/bin/qmail-qstat
chownmod root:_sqmail 0755 usr/bin/qmail-tcpto
chownmod root:_sqmail 0755 usr/bin/qmail-tcpok
chownmod root:_sqmail 0755 usr/bin/qmail-pop3d
chownmod root:_sqmail 0711 usr/bin/qmail-popup
chownmod root:_sqmail 0755 usr/bin/qmail-qmqpc
chownmod root:_sqmail 0755 usr/bin/qmail-qmqpd
chownmod root:_sqmail 0755 usr/bin/qmail-qmtpd
chownmod root:_sqmail 0755 usr/bin/qmail-smtpd
chownmod root:_sqmail 0755 usr/bin/predate
chownmod root:_sqmail 0755 usr/bin/datemail
chownmod root:_sqmail 0755 usr/bin/mailsubj
chownmod root:_sqmail 0755 usr/bin/sendmail
chownmod root:_sqmail 0755 usr/bin/qreceipt
chownmod root:_sqmail 0755 usr/bin/qbiff
chownmod root:_sqmail 0755 usr/bin/forward
chownmod root:_sqmail 0755 usr/bin/preline
chownmod root:_sqmail 0755 usr/bin/condredirect
chownmod root:_sqmail 0755 usr/bin/bouncesaying
chownmod root:_sqmail 0755 usr/bin/except
chownmod root:_sqmail 0755 usr/bin/maildirmake.sqmail
chownmod root:_sqmail 0755 usr/bin/maildir2mbox
chownmod root:_sqmail 0755 usr/bin/maildirwatch
chownmod root:_sqmail 0755 usr/bin/fastforward
chownmod root:_sqmail 0755 usr/bin/printforward
chownmod root:_sqmail 0755 usr/bin/setforward
chownmod root:_sqmail 0755 usr/bin/newaliases
chownmod root:_sqmail 0755 usr/bin/printmaillist
chownmod root:_sqmail 0755 usr/bin/setmaillist
chownmod root:_sqmail 0755 usr/bin/newinclude
chownmod root:_sqmail 0755 usr/bin/srsforward
chownmod root:_sqmail 0755 usr/bin/srsreverse
chownmod root:_sqmail 0755 usr/bin/ipmeprint
chownmod root:_sqmail 0755 usr/bin/spfquery
chownmod root:_sqmail 0755 usr/bin/dnscname
chownmod root:_sqmail 0755 usr/bin/dnsfq
chownmod root:_sqmail 0755 usr/bin/dnsip
chownmod root:_sqmail 0755 usr/bin/dnsmxip
chownmod root:_sqmail 0755 usr/bin/dnsptr
chownmod root:_sqmail 0755 usr/bin/dnstxt
chownmod root:_sqmail 0755 usr/bin/hostname
chownmod root:_sqmail 0755 usr/bin/columnt
chownmod root:_sqmail 0755 usr/bin/ddist
chownmod root:_sqmail 0755 usr/bin/deferrals
chownmod root:_sqmail 0755 usr/bin/failures
chownmod root:_sqmail 0755 usr/bin/matchup
chownmod root:_sqmail 0755 usr/bin/recipients
chownmod root:_sqmail 0755 usr/bin/rhosts
chownmod root:_sqmail 0755 usr/bin/rxdelay
chownmod root:_sqmail 0755 usr/bin/senders
chownmod root:_sqmail 0755 usr/bin/successes
chownmod root:_sqmail 0755 usr/bin/suids
chownmod root:_sqmail 0755 usr/bin/tai64nfrac
chownmod root:_sqmail 0755 usr/bin/xqp
chownmod root:_sqmail 0755 usr/bin/xrecipient
chownmod root:_sqmail 0755 usr/bin/xsender
chownmod root:_sqmail 0755 usr/bin/zddist
chownmod root:_sqmail 0755 usr/bin/zdeferrals
chownmod root:_sqmail 0755 usr/bin/zfailures
chownmod root:_sqmail 0755 usr/bin/zfailures
chownmod root:_sqmail 0755 usr/bin/zoverall
chownmod root:_sqmail 0755 usr/bin/zrecipients
chownmod root:_sqmail 0755 usr/bin/zrhosts
chownmod root:_sqmail 0755 usr/bin/zrxdelay
chownmod root:_sqmail 0755 usr/bin/zsenders
chownmod root:_sqmail 0755 usr/bin/zsendmail
chownmod root:_sqmail 0755 usr/bin/zsuccesses
chownmod root:_sqmail 0755 usr/bin/zsuids
ln -sf ../../usr/bin var/qmail/bin
ln -sf ../../etc/qmail/alias var/qmail/alias
ln -sf ../../etc/qmail/control var/qmail/control
ln -sf ../../etc/qmail/users var/qmail/users
ln -sf ../../etc/qmail/ssl var/qmail/ssl
ln -sf ../../etc/sv var/qmail/svc
chgrp -h _sqmail var/qmail/bin var/qmail/alias var/qmail/control \
var/qmail/users var/qmail/ssl var/qmail/svc
;;
esac

View file

@ -0,0 +1,78 @@
# Notes on Void Linux packaging for s/qmail
In order to integrate into a Void Linux system, s/qmail is packaged in
a modified way compared to upstream.
1) Sole MTA
As the other MTA on Void, sqmail can not be installed in parallel to
other providers of smtp-server, and in particular, not custom (manual)
installations of qmail.
2) Different UID/GID and names
UID/GID above 1000 are reserved for the userland on Void.
sqmail therefore runs on a different set than qmail/sqmail defaults.
Also, user and group names for system services are prefixed with a _.
798:_nofiles:sqmail group for auxiliar files:
799:_sqmail:sqmail group for binary files:
#
790:_alias:sqmail Alias user:_nofiles:alias
791:_qmaild:sqmail Daemon user:_nofiles
792:_qmaill:sqmail Log user:_nofiles
793:_qmailp:sqmail Password user:_nofiles
794:_qmailq:sqmail Queue user:_sqmail:queue
795:_qmailr:sqmail Remote user:_sqmail
796:_qmails:sqmail Send user:_sqmail
797:_sqmtls:sqmail TLS user:_nofiles:ssl
This should not result in problems unless you are trying to integrate
an existing qmail queue.
3) Different directory structure:
In order to keep /var possibly noexec, binaries reside in /usr/bin.
Configuration resides in /etc/qmail.
Symlinks provide support for legacy paths:
drwxr-xr-x root _sqmail /var/qmail/
drwxr-sr-x _alias _sqmail /var/qmail/alias -> ../../etc/qmail/alias
drwxr-xr-x root root /var/qmail/bin -> ../../usr/bin
drwxr-xr-x root _sqmail /var/qmail/control -> ../../etc/qmail/control
drwxr-x--- _qmailq _sqmail /var/qmail/queue/
drwx------ _sqmtls _nofiles /var/qmail/ssl -> ../../etc/qmail/ssl
drwxr-xr-x root root /var/qmail/svc -> ../../etc/sv
drwxr-xr-x root _sqmail /var/qmail/users -> ../../etc/qmail/users
4) Services
Services are in /etc/sv and need to be linked to /var/service as usual.
We provide four default services:
qmail-send The main qmail service
qmail-smtpd SMTP daemon, port 25 (STARTTLS possible)
qmail-smtpsd SMTPS daemon, port 465 (AUTH required, TLS)
qmail-smtpsub SMTP for submission, port 587 (AUTH & STARTTLS required)
For TLS support you need to create a /var/qmail/ssl/ssl.env,
see the included example.
5) Default configuration
There is no default sqmail configuration. You are expected to know
how to configure this.
6) Miscellaneous
maildirmake is installed as maildirmake.sqmail in order to not
conflict with maildrop.

View file

@ -0,0 +1,2 @@
#!/bin/sh
exec vlogger -p mail.notice

View file

@ -0,0 +1,7 @@
#!/bin/sh
if [ -f /var/qmail/control/defaultdelivery ]; then
defaultdelivery=$(cat /var/qmail/control/defaultdelivery)
else
defaultdelivery=./Maildir/
fi
exec env - PATH="/var/qmail/bin:$PATH" qmail-start $defaultdelivery

View file

@ -0,0 +1,2 @@
#!/bin/sh
exec vlogger -p mail.notice

View file

@ -0,0 +1,21 @@
#!/bin/sh
QMAILU=$(id -u _qmaild)
QMAILG=$(id -g _qmaild)
HOSTNAME=$(hostname)
export SPF="1"
if [ -f /var/qmail/ssl/ssl.env ]; then
export UCSPITLS=""
. /var/qmail/ssl/ssl.env
exec env PATH="/var/qmail/bin:$PATH" \
sslserver -seVn -Rp -l $HOSTNAME \
-Xx /var/qmail/control/rules.smtpd.cdb \
-u $QMAILU -g $QMAILG :: 25 \
qmail-smtpd 2>&1
else
exec env PATH="/var/qmail/bin:$PATH" \
tcpserver -p -v \
-Xx /var/qmail/control/rules.smtpd.cdb \
-u $QMAILU -g $QMAILG :: 25 \
qmail-smtpd 2>&1
fi

View file

@ -0,0 +1,2 @@
#!/bin/sh
exec vlogger -p mail.notice

View file

@ -0,0 +1,12 @@
#!/bin/sh
QMAILU=$(id -u _qmaild)
QMAILG=$(id -g _qmaild)
HOSTNAME=$(hostname)
export SMTPAUTH="!"
. /var/qmail/ssl/ssl.env
exec env PATH="/var/qmail/bin:/usr/local/bin:$PATH" \
sslserver -seV -Rp -l $HOSTNAME \
-Xx /var/qmail/control/rules.smtpd.cdb \
-u $QMAILU -g $QMAILG :: 465 \
qmail-smtpd qmail-authuser true 2>&1

View file

@ -0,0 +1,2 @@
#!/bin/sh
exec vlogger -p mail.notice

View file

@ -0,0 +1,11 @@
#!/bin/sh
QMAILU=$(id -u _qmaild)
QMAILG=$(id -g _qmaild)
HOSTNAME=$(hostname)
export SMTPAUTH="!"
export UCSPITLS="!"
. /var/qmail/ssl/ssl.env
exec env PATH="/var/qmail/bin:/usr/local/bin:$PATH" \
sslserver -seVn -Rp -l $HOSTNAME \
-u $QMAILU -g $QMAILG :: 587 \
qmail-smtpd qmail-authuser true 2>&1

View file

@ -0,0 +1,8 @@
export SSL_USER=_sqmtls
export SSL_GROUP=_nofiles
SSL_DIR=/var/qmail/ssl
export SSL_CHROOT=$SSL_DIR
export CERTFILE=$SSL_DIR/server.pem
export KEYFILE=$SSL_DIR/server-key.pem
export DHFILE=$SSL_DIR/dh1024.pem

View file

@ -0,0 +1,25 @@
We generate the file auto_uids.c ourselves.
--- mail/sqmail/sqmail-4.0.03/src/Makefile.orig
+++ mail/sqmail/sqmail-4.0.03/src/Makefile
@@ -95,20 +95,6 @@
compile auto_split.c
./compile auto_split.c
-auto_uids.c: \
-auto-uid auto-gid ../conf-users ../conf-groups
- ( ./auto-uid auto_uida `head -1 ../conf-users` \
- &&./auto-uid auto_uidd `head -2 ../conf-users | tail -1` \
- &&./auto-uid auto_uidl `head -3 ../conf-users | tail -1` \
- &&./auto-uid auto_uido `head -4 ../conf-users | tail -1` \
- &&./auto-uid auto_uidp `head -5 ../conf-users | tail -1` \
- &&./auto-uid auto_uidq `head -6 ../conf-users | tail -1` \
- &&./auto-uid auto_uidr `head -7 ../conf-users | tail -1` \
- &&./auto-uid auto_uids `head -8 ../conf-users | tail -1` \
- &&./auto-gid auto_gidq `head -1 ../conf-groups` \
- &&./auto-gid auto_gidn `head -2 ../conf-groups | tail -1` \
- ) > auto_uids.c.tmp && mv auto_uids.c.tmp auto_uids.c
-
auto_uids.o: \
compile auto_uids.c
./compile auto_uids.c

127
srcpkgs/sqmail/template Normal file
View file

@ -0,0 +1,127 @@
# Template file for 'sqmail'
pkgname=sqmail
version=4.0.03
revision=1
create_wrksrc=yes
build_wrksrc="mail/${pkgname}/${pkgname}-${version}/src"
makedepends="fehQlibs libidn2-devel ucspi-ssl-devel"
depends="ucspi-ssl ucspi-tcp6"
short_desc="Fast, secure, and reliable email transmission (s/qmail)"
maintainer="Leah Neukirchen <leah@vuxu.org>"
license="Public Domain"
homepage="https://www.fehcom.de/sqmail/sqmail.html"
distfiles="https://www.fehcom.de/sqmail/sqmail-${version}.tgz"
checksum=fec96b51aee3506b6c068b0040304eb530f6926f719d9b917f07fac53f5e12bc
nocross="custom build system"
provides="smtp-server-0_1"
replaces="smtp-server>=0"
system_groups="_nofiles:798 _sqmail:799"
system_accounts+=" _alias:790"
_alias_descr="sqmail Alias user"
_alias_pgroup="_nofiles"
_alias_homedir="/var/qmail/alias"
system_accounts+=" _qmaild:791"
_qmaild_descr="sqmail Daemon user"
_qmaild_pgroup="_nofiles"
_qmaild_homedir="/var/qmail/"
system_accounts+=" _qmaill:792"
_qmaill_descr="sqmail Log user"
_qmaill_pgroup="_nofiles"
_qmaill_homedir="/var/qmail/"
system_accounts+=" _qmailp:793"
_qmailp_descr="sqmail Password user"
_qmailp_pgroup="_nofiles"
_qmailp_homedir="/var/qmail/"
system_accounts+=" _qmailq:794"
_qmailq_descr="sqmail Queue user"
_qmailq_pgroup="_sqmail"
_qmailq_homedir="/var/qmail/queue"
system_accounts+=" _qmailr:795"
_qmailr_descr="sqmail Remote user"
_qmailr_pgroup="_sqmail"
_qmailr_homedir="/var/qmail/"
system_accounts+=" _qmails:796"
_qmails_descr="sqmail Send user"
_qmails_pgroup="_sqmail"
_qmails_homedir="/var/qmail/"
system_accounts+=" _sqmtls:797"
_sqmtls_descr="sqmail TLS user"
_sqmtls_pgroup="_nofiles"
_sqmtls_homedir="/var/qmail/ssl"
do_configure() {
pwd >home
echo "${CC} ${CFLAGS} -DSMTPUTF8 -DIDN2" >../conf-cc
echo "${CC} ${LDFLAGS}" >../conf-ld
echo "/var/qmail" >../conf-home
printf '%s\n' _sqmail _nofiles >../conf-groups
printf '%s\n' _alias _qmaild _qmaill root _qmailp _qmailq _qmailr _qmails >../conf-users
cat >../conf-ids <<EOF
798:_nofiles:sqmail group for auxiliar files:
799:_sqmail:sqmail group for binary files:
#
790:_alias:sqmail Alias user:_nofiles:alias
791:_qmaild:sqmail Daemon user:_nofiles
792:_qmaill:sqmail Log user:_nofiles
793:_qmailp:sqmail Password user:_nofiles
794:_qmailq:sqmail Queue user:_sqmail:queue
795:_qmailr:sqmail Remote user:_sqmail
796:_qmails:sqmail Send user:_sqmail
797:_sqmtls:sqmail TLS user:_nofiles:ssl
EOF
cat >auto_uids.c <<EOF
int auto_uida = 790;
int auto_uidd = 791;
int auto_uidl = 792;
int auto_uido = 0;
int auto_uidp = 793;
int auto_uidq = 794;
int auto_uidr = 795;
int auto_uids = 796;
int auto_gidn = 798;
int auto_gidq = 799;
EOF
echo >socket.lib
echo -lssl -lcrypto -ldl >ssl.lib
}
do_build() {
ln -sf /usr/include/ucspissl.h .
ln -sf /usr/lib/ucspissl.a .
make
}
do_install() {
for f in $(cat $(printf '%s\n' it-*=d |grep -v setup)) predate datemail; do
vbin $f
done
vsconf config
vsconf config-fast
for f in ../man/*.?; do
vman $f
done
vsv qmail-send
vsv qmail-smtpd
vsv qmail-smtpsd
vsv qmail-smtpsub
vlicense ../doc/LICENSE
mv ${DESTDIR}/usr/bin/maildirmake ${DESTDIR}/usr/bin/maildirmake.sqmail
mv ${DESTDIR}/usr/share/man/man1/maildirmake.1 ${DESTDIR}/usr/share/man/man1/maildirmake.sqmail.1
ln -sf sendmail ${DESTDIR}/usr/bin/mailq
vdoc ${FILESDIR}/README.voidlinux
vsconf ${FILESDIR}/ssl.env
}