# $Id: Portfile 51273 2009-05-22 03:50:32Z macsforever2000@macports.org $

PortSystem	 1.0

name		 postgrey
version		 1.32

categories	 mail
maintainers	 sky.fr:cbellot
description	 Postfix policy server implementing greylisting
long_description When a request for delivery of a mail is received by \
		 Postfix via SMTP, the triplet CLIENT_IP / SENDER / RECIPIENT \
		 is built. If it is the first time that this triplet is seen, \
		 or if the triplet was first seen, less than 5 minutes ago, \
		 then the mail gets rejected with a temporary error. Hopefully\
		 spammers or viruses will not try again later, as it is \
		 however required per RFC.
platforms	 darwin
homepage	 http://postgrey.schweikert.ch/
master_sites	 ${homepage}pub \
		 ${homepage}pub/old
checksums        md5 524a4e165bf997996f3bccade394712f

build.target
depends_lib-append	port:p5-io-multiplex
depends_lib-append	port:p5-net-server
depends_lib-append	port:p5-berkeleydb

startupitem.create      yes
startupitem.start       "${prefix}/share/postgrey/postgrey.sh start"
startupitem.stop        "${prefix}/share/postgrey/postgrey.sh stop"

configure {
  system "echo all: > ${worksrcpath}/Makefile"
  reinplace "s|/usr/bin/perl|${prefix}/bin/perl|g" \
  	${worksrcpath}/postgrey \
	${worksrcpath}/contrib/postgreyreport
  reinplace "s|/etc/postfix|${prefix}/etc/postgrey|g" \
  	${worksrcpath}/postgrey \
	${worksrcpath}/postgrey_whitelist_clients \
	${worksrcpath}/postgrey_whitelist_recipients \
	${worksrcpath}/contrib/postgreyreport
  reinplace "s|/etc/main.cf|postfix's main.cf|g" \
  	${worksrcpath}/postgrey
  reinplace "s|/var/spool/postfix/postgrey|${prefix}/var/spool/postgrey|g" \
	${worksrcpath}/postgrey \
	${worksrcpath}/contrib/postgreyreport
}
destroot {
  adduser postgrey realname=Postgrey\ Server
  addgroup postgrey
  file mkdir ${destroot}${prefix}/etc/postgrey
  file mkdir ${destroot}${prefix}/share/postgrey
  file mkdir ${destroot}${prefix}/share/doc/postgrey
  file mkdir ${destroot}${prefix}/share/man/man1
  file mkdir ${destroot}${prefix}/share/man/man8
  xinstall -d -o postgrey -g postgrey -m 750 \
	${destroot}${prefix}/var/spool/postgrey
  xinstall -d -o postgrey -g postgrey -m 750 \
	${destroot}${prefix}/var/run/postgrey
  destroot.keepdirs ${destroot}${prefix}/var/spool/postgrey \
	${destroot}${prefix}/var/run/postgrey \
	${destroot}${prefix}/etc/postgrey
  system "pod2man --section=8 ${worksrcpath}/postgrey > \
	${destroot}${prefix}/share/man/man8/postgrey.8"
  system "pod2man --section=1 ${worksrcpath}/contrib/postgreyreport > \
	${destroot}${prefix}/share/man/man1/postgreyreport.1"
  xinstall -m 755 -c ${worksrcpath}/contrib/postgreyreport \
	${destroot}${prefix}/bin/postgreyreport
  xinstall -m 644 -c ${worksrcpath}/README \
  	${worksrcpath}/README.exim \
  	${worksrcpath}/Changes \
  	${worksrcpath}/COPYING \
	${destroot}${prefix}/share/doc/postgrey
  xinstall -m 644 -c ${portpath}/files/postgrey.conf \
	${destroot}${prefix}/etc/postgrey/postgrey.conf.sample
  xinstall -m 755 -c ${portpath}/files/postgrey.sh \
	${destroot}${prefix}/share/postgrey
  reinplace "s|__PREFIX|${prefix}|g" \
	${destroot}${prefix}/share/postgrey/postgrey.sh
  xinstall -m 4755 -o postgrey -g postgrey -c \
  	${worksrcpath}/postgrey \
	${destroot}${prefix}/sbin/postgrey
  xinstall -m 644 -c \
  	${worksrcpath}/postgrey_whitelist_clients \
	${destroot}${prefix}/etc/postgrey
  xinstall -m 644 -c \
  	${worksrcpath}/postgrey_whitelist_recipients \
	${destroot}${prefix}/etc/postgrey/postgrey_whitelist_recipients.default
}

post-install {
ui_msg "\n
Postgrey will be running with following default parameters:
  user        : postgrey
  group       : postgrey
  tcp binding : localhost
  tcp port    : 60000

You will find configuration in ${prefix}/etc/postgrey
  postgrey.conf                         : launch options
  postgrey_whitelist_clients            : default clients whitelist
  postgrey_whitelist_clients.local      : customisable clients whitelist
  postgrey_whitelist_recipients         : customisable recipients whitelist
  postgrey_whitelist_recipients.default : default recipients whitelist (unused)

If you are using postfix, you should add to your main.cf a line:
  check_policy_service inet:127.0.0.1:60000
in the smtpd_recipient_restrictions configuration (after
reject_unauth_destination and other rules) and reload postfix daemon.

\n"
}

