From f5ec9f1ea3eb58fd58a24048adadf68c48dd84d2 Mon Sep 17 00:00:00 2001 From: Martin Wilke Date: Tue, 9 Jan 2007 21:09:17 +0000 Subject: [PATCH] Qpsmtpd started as a replacement daemon for the SMTP receiver (qmail-smtpd) from the qmail mail transport agent (MTA). qmail-smtpd has a number of shortcomings (e.g. being unable to check the validity of a recipient mail address) and is written in C which makes it burdensome to modify and extend. Qpsmtpd, on the other hand, is written in pure perl and can be customized easily. It consists of a core that implements a complete SMTP server, and a number of plugins/modules which control the operations. Such plugins include plugins to check the recipient and sender as well as plugins for virus scanning, spam checking, blocking lists (dns and rhs), AUTH and TLS. Qpsmtpd can not only be used with qmail but also with e.g. postfix and exim. It can also write messages to a Maildir or forward it to a remote host without buffering. WWW: http://smtpd.develooper.com/ PR: ports/107668 Submitted by: Zane C. Bowers --- mail/Makefile | 1 + mail/p5-qpsmtpd/Makefile | 76 ++++++++++++++++++++++++ mail/p5-qpsmtpd/distinfo | 3 + mail/p5-qpsmtpd/files/qpsmtpd.sh.in | 78 ++++++++++++++++++++++++ mail/p5-qpsmtpd/pkg-descr | 14 +++++ mail/p5-qpsmtpd/pkg-plist | 92 +++++++++++++++++++++++++++++ 6 files changed, 264 insertions(+) create mode 100644 mail/p5-qpsmtpd/Makefile create mode 100644 mail/p5-qpsmtpd/distinfo create mode 100644 mail/p5-qpsmtpd/files/qpsmtpd.sh.in create mode 100644 mail/p5-qpsmtpd/pkg-descr create mode 100644 mail/p5-qpsmtpd/pkg-plist diff --git a/mail/Makefile b/mail/Makefile index 4ece946f3079..e611ab2d1b91 100644 --- a/mail/Makefile +++ b/mail/Makefile @@ -382,6 +382,7 @@ SUBDIR += p5-URI-imaps SUBDIR += p5-WWW-GMail SUBDIR += p5-WWW-Hotmail + SUBDIR += p5-qpsmtpd SUBDIR += p5-vpopmail SUBDIR += pantomime SUBDIR += pathalias diff --git a/mail/p5-qpsmtpd/Makefile b/mail/p5-qpsmtpd/Makefile new file mode 100644 index 000000000000..ecfdec6f2f2a --- /dev/null +++ b/mail/p5-qpsmtpd/Makefile @@ -0,0 +1,76 @@ +# New ports collection makefile for: qpsmtpd +# Date created: 1 January 2007 +# Whom: Zane C. Bowers +# +# $FreeBSD$ +# + +PORTNAME= qpsmtpd +PORTVERSION= 0.32 +CATEGORIES= mail +DISTNAME= qpsmtpd-${PORTVERSION} + +MAINTAINER= vvelox@vvelox.net +COMMENT= A flexible SMTP daemon written in Perl and featuring a plugin API + +#none for Net::Milter yet... meaning the milter plugin does not work and thus deleted when installed +#none for Clamd yet... meaning the plugins/virus/clamd does not work and thus deleted when installed +RUN_DEPENDS= ${SITE_PERL}/${PERL_ARCH}/Net/DNS.pm:${PORTSDIR}/dns/p5-Net-DNS \ + ${SITE_PERL}/${PERL_ARCH}/MIME/Base64.pm:${PORTSDIR}/converters/p5-MIME-Base64 \ + ${SITE_PERL}/Mail/Header.pm:${PORTSDIR}/mail/p5-Mail-Tools \ + ${SITE_PERL}/IO/Socket/SSL.pm:${PORTSDIR}/security/p5-IO-Socket-SSL \ + spamd:${PORTSDIR}/mail/p5-Mail-SpamAssassin \ + ${SITE_PERL}/${PERL_ARCH}/Net/DNS/Resolver.pm:${PORTSDIR}/dns/p5-Net-DNS \ + ${SITE_PERL}/Date/Parse.pm:${PORTSDIR}/devel/p5-TimeDate \ + ${SITE_PERL}/File/Temp.pm:${PORTSDIR}/devel/p5-File-Temp \ + ${SITE_PERL}/${PERL_ARCH}/Geo/IP.pm:${PORTSDIR}/net/p5-Geo-IP \ + ${SITE_PERL}/Net/LDAP.pm:${PORTSDIR}/net/p5-perl-ldap \ + ${SITE_PERL}/Digest/HMAC_MD5.pm:${PORTSDIR}/security/p5-Digest-HMAC + +MASTER_SITES= http://smtpd.develooper.com/files/ + +PKGNAMEPREFIX= p5- + +WRKSRC= ${WRKDIR}/${DISTNAME} + +PERL_CONFIGURE= yes + +MAN3= Qpsmtpd::Constants.3 \ + Qpsmtpd::DSN.3 \ + Qpsmtpd::Auth.3 \ + Qpsmtpd::Transaction.3 \ + Qpsmtpd::Address.3 \ + Qpsmtpd.3 \ + Qpsmtpd::Connection.3 \ + Qpsmtpd::Postfix.3 \ + Apache::Qpsmtpd.3 + +USE_RC_SUBR= qpsmtpd.sh + +pre-configure: + @${RM} -v ${WRKSRC}/plugins/milter + @${RM} -v ${WRKSRC}/plugins/virus/clamdscan + +post-install: + @${MKDIR} -v ${PREFIX}/share/examples/${PORTNAME} + @${CP} -v ${WRKSRC}/config.sample/* ${PREFIX}/share/examples/${PORTNAME} + @${MKDIR} -v ${PREFIX}/share/${PORTNAME} + @${MKDIR} -v ${PREFIX}/share/${PORTNAME}/plugins + @${CP} -vr ${WRKSRC}/plugins/ ${PREFIX}/share/${PORTNAME}/plugins + @${ECHO_MSG} + @${ECHO_MSG} + @${ECHO_MSG} '*****************************************************************' + @${ECHO_MSG} + @${ECHO_MSG} "Please read http://wiki.qpsmtpd.org/ for more info about" + @${ECHO_MSG} "installation." + @${ECHO_MSG} + @${ECHO_MSG} "The example config can be found in "${PREFIX}"/share/examples/"${PORTNAME}"/" + @${ECHO_MSG} + @${ECHO_MSG} "The plugins can be found in "${PREFIX}"/share/"${PORTNAME}"/plugins/" + @${ECHO_MSG} + @${ECHO_MSG} "This port does also not make any assumptions about what user you" + @${ECHO_MSG} "wish to use or install location." + @${ECHO_MSG} + @${ECHO_MSG} '*****************************************************************' + +.include diff --git a/mail/p5-qpsmtpd/distinfo b/mail/p5-qpsmtpd/distinfo new file mode 100644 index 000000000000..d967bcb282e1 --- /dev/null +++ b/mail/p5-qpsmtpd/distinfo @@ -0,0 +1,3 @@ +MD5 (qpsmtpd-0.32.tar.gz) = ec4622643b7fd504676dadd3b238bcf5 +SHA256 (qpsmtpd-0.32.tar.gz) = 21ff3cd3a929dbcfe694fdfd6cb7f581e8e4dfcd3e56f0449c90a218200d1e0e +SIZE (qpsmtpd-0.32.tar.gz) = 108080 diff --git a/mail/p5-qpsmtpd/files/qpsmtpd.sh.in b/mail/p5-qpsmtpd/files/qpsmtpd.sh.in new file mode 100644 index 000000000000..52124aada89a --- /dev/null +++ b/mail/p5-qpsmtpd/files/qpsmtpd.sh.in @@ -0,0 +1,78 @@ +#!/bin/sh + +# PROVIDE: qpsmtpd +# REQUIRE: NETWORKING SERVERS +# BEFORE: securelevel + +#variables +#qpsmtpd_user = the user to run qpsmtpd-forkserver under +#qpsmtpd_group = the group the pid dir will be chowned to +#qpsmtpd_port = the port it should listen on +#qpsmtpd_max_per_ip = max connections per IP +#qpsmtpd_max_connections = maximum total connections +#qpsmtpd_listen_on = IP to listen on + +. "/etc/rc.subr" + +name="qpsmtpd" +rcvar=`set_rcvar` + +command="%%PREFIX%%/bin/qpsmtpd-forkserver" +pidfile="/var/run/qpsmtpd/qpsmtpd.pid" + +start_precmd="start_precmd" +start_cmd="start_cmd" +stop_cmd="stop_cmd" + +start_precmd() +{ + #exits if no user is specified + if [ -z $qpsmtpd_user ]; then + echo "qpsmtpd_user not set" + exit 1 + fi + + #exits if no group is specified + if [ -z $qpsmtpd_group ]; then + echo "qpsmtpd_group not set" + exit 1 + fi + + #sets it to the default if the port is not specified + if [ -z $qpsmtpd_port ]; then + qpsmtpd_port="2525" + fi + + #set it to the default max per ip + if [ -z $qpsmtpd_max_per_ip ]; then + qpsmtpd_max_per_ip="5" + fi + + #set it do the max number of connections total + if [ -z $qpsmtpd_max_connections ]; then + qpsmtpd_max_connections="15" + fi + + #set the default listen on to everything + if [ -z $qpsmtpd_listen_on ]; then + qpsmtpd_listen_on="0.0.0.0" + fi + + if [ ! -d /var/run/qpsmtpd/ ] ; then + mkdir /var/run/qpsmtpd + fi + + chown $qpsmtpd_user:$qpsmtpd_group /var/run/qpsmtpd +} + +start_cmd() +{ + eval $command -p $qpsmtpd_port -c $qpsmtpd_max_connections -u $qpsmtpd_users -m $qpsmtpd_max_per_ip -l $qpsmtpd_listen_on --pid-file $pidfile +} + +stop_cmd() +{ + kill `cat $pidfile` +} + +run_rc_command "$1" diff --git a/mail/p5-qpsmtpd/pkg-descr b/mail/p5-qpsmtpd/pkg-descr new file mode 100644 index 000000000000..5b68995d900f --- /dev/null +++ b/mail/p5-qpsmtpd/pkg-descr @@ -0,0 +1,14 @@ +Qpsmtpd started as a replacement daemon for the SMTP receiver (qmail-smtpd) +from the qmail mail transport agent (MTA). qmail-smtpd has a number of +shortcomings (e.g. being unable to check the validity of a recipient mail +address) and is written in C which makes it burdensome to modify and extend. +Qpsmtpd, on the other hand, is written in pure perl and can be customized +easily. It consists of a core that implements a complete SMTP server, and a +number of plugins/modules which control the operations. Such plugins +include plugins to check the recipient and sender as well as plugins for +virus scanning, spam checking, blocking lists (dns and rhs), AUTH and TLS. +Qpsmtpd can not only be used with qmail but also with e.g. postfix and +exim. It can also write messages to a Maildir or forward it to a remote +host without buffering. + +WWW: http://smtpd.develooper.com/ diff --git a/mail/p5-qpsmtpd/pkg-plist b/mail/p5-qpsmtpd/pkg-plist new file mode 100644 index 000000000000..0e74f2e9e572 --- /dev/null +++ b/mail/p5-qpsmtpd/pkg-plist @@ -0,0 +1,92 @@ +bin/qpsmtpd-forkserver +bin/qpsmtpd +%%SITE_PERL%%/Qpsmtpd.pm +%%SITE_PERL%%/Qpsmtpd/SelectServer.pm +%%SITE_PERL%%/Qpsmtpd/Utils.pm +%%SITE_PERL%%/Qpsmtpd/TcpServer.pm +%%SITE_PERL%%/Qpsmtpd/Constants.pm +%%SITE_PERL%%/Qpsmtpd/Auth.pm +%%SITE_PERL%%/Qpsmtpd/DSN.pm +%%SITE_PERL%%/Qpsmtpd/Transaction.pm +%%SITE_PERL%%/Qpsmtpd/Address.pm +%%SITE_PERL%%/Qpsmtpd/Plugin.pm +%%SITE_PERL%%/Qpsmtpd/SMTP.pm +%%SITE_PERL%%/Qpsmtpd/Postfix.pm +%%SITE_PERL%%/Qpsmtpd/Connection.pm +%%SITE_PERL%%/Apache/Qpsmtpd.pm +%%SITE_PERL%%/%%PERL_ARCH%%/auto/qpsmtpd/.packlist +@dirrmtry %%SITE_PERL%%/%%PERL_ARCH%%/auto/qpsmtpd +@dirrm %%SITE_PERL%%/Qpsmtpd/ +@dirrm %%SITE_PERL%%/Apache/ +%%EXAMPLESDIR%%/IP +%%EXAMPLESDIR%%/badhelo +%%EXAMPLESDIR%%/badrcptto_patterns +%%EXAMPLESDIR%%/dnsbl_zones +%%EXAMPLESDIR%%/invalid_resolvable_fromhost +%%EXAMPLESDIR%%/logging +%%EXAMPLESDIR%%/loglevel +%%EXAMPLESDIR%%/plugins +%%EXAMPLESDIR%%/relayclients +%%EXAMPLESDIR%%/require_resolvable_fromhost +%%EXAMPLESDIR%%/rhsbl_zones +%%EXAMPLESDIR%%/size_threshold +@dirrm %%EXAMPLESDIR%% +%%DATADIR%%/plugins/ident/geoip +%%DATADIR%%/plugins/ident/p0f +@dirrm %%DATADIR%%/plugins/ident +%%DATADIR%%/plugins/auth/auth_cvm_unix_local +%%DATADIR%%/plugins/auth/auth_flat_file +%%DATADIR%%/plugins/auth/auth_ldap_bind +%%DATADIR%%/plugins/auth/auth_vpopmail_sql +%%DATADIR%%/plugins/auth/authdeny +%%DATADIR%%/plugins/auth/authnull +@dirrm %%DATADIR%%/plugins/auth +%%DATADIR%%/plugins/queue/exim-bsmtp +%%DATADIR%%/plugins/queue/maildir +%%DATADIR%%/plugins/queue/postfix-queue +%%DATADIR%%/plugins/queue/qmail-queue +%%DATADIR%%/plugins/queue/smtp-forward +@dirrm %%DATADIR%%/plugins/queue +%%DATADIR%%/plugins/logging/adaptive +%%DATADIR%%/plugins/logging/devnull +%%DATADIR%%/plugins/logging/file +%%DATADIR%%/plugins/logging/syslog +%%DATADIR%%/plugins/logging/warn +@dirrm %%DATADIR%%/plugins/logging +%%DATADIR%%/plugins/virus/uvscan +%%DATADIR%%/plugins/virus/bitdefender +%%DATADIR%%/plugins/virus/check_for_hi_virus +%%DATADIR%%/plugins/virus/clamav +%%DATADIR%%/plugins/virus/hbedv +%%DATADIR%%/plugins/virus/kavscanner +%%DATADIR%%/plugins/virus/klez_filter +%%DATADIR%%/plugins/virus/sophie +%%DATADIR%%/plugins/virus/aveclient +@dirrm %%DATADIR%%/plugins/virus +%%DATADIR%%/plugins/check_earlytalker +%%DATADIR%%/plugins/check_loop +%%DATADIR%%/plugins/check_norelay +%%DATADIR%%/plugins/check_relay +%%DATADIR%%/plugins/check_spamhelo +%%DATADIR%%/plugins/content_log +%%DATADIR%%/plugins/count_unrecognized_commands +%%DATADIR%%/plugins/dns_whitelist_soft +%%DATADIR%%/plugins/dnsbl +%%DATADIR%%/plugins/greylisting +%%DATADIR%%/plugins/hosts_allow +%%DATADIR%%/plugins/http_config +%%DATADIR%%/plugins/check_badrcptto_patterns +%%DATADIR%%/plugins/check_badrcptto +%%DATADIR%%/plugins/check_badmailfromto +%%DATADIR%%/plugins/quit_fortune +%%DATADIR%%/plugins/rcpt_ok +%%DATADIR%%/plugins/require_resolvable_fromhost +%%DATADIR%%/plugins/rhsbl +%%DATADIR%%/plugins/sender_permitted_from +%%DATADIR%%/plugins/spamassassin +%%DATADIR%%/plugins/tls +%%DATADIR%%/plugins/tls_cert +%%DATADIR%%/plugins/check_basicheaders +%%DATADIR%%/plugins/check_badmailfrom +@dirrm %%DATADIR%%/plugins/ +@dirrm %%DATADIR%%