aboutsummaryrefslogtreecommitdiff
path: root/mail/spamassassin/Makefile
blob: 6f3b5c5c9e139ec0ff66d1b10ff0d4d35c158c0b (plain) (blame)
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
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
# Created by: Anthony Kim
# $FreeBSD$

PORTNAME=	spamassassin
PORTVERSION=	3.4.5
CATEGORIES?=	mail perl5
MASTER_SITES=	APACHE/spamassassin/source CPAN/Mail
DISTNAME=	Mail-SpamAssassin-${PORTVERSION}

MAINTAINER?=	zeising@FreeBSD.org
COMMENT?=	Highly efficient mail filter for identifying spam

LICENSE=	APACHE20

BUILD_DEPENDS=	p5-Encode-Detect>=0:converters/p5-Encode-Detect \
		p5-HTML-Parser>=3.46:www/p5-HTML-Parser \
		p5-HTTP-Date>=0:www/p5-HTTP-Date \
		p5-Net-DNS>=0.63:dns/p5-Net-DNS \
		p5-NetAddr-IP>=4.010:net-mgmt/p5-NetAddr-IP
RUN_DEPENDS:=	${BUILD_DEPENDS} \
		p5-Net-CIDR-Lite>=0:net/p5-Net-CIDR-Lite \
		p5-Net-IDN-Encode>=0:textproc/p5-Net-IDN-Encode \
		p5-Net-LibIDN>=0:dns/p5-Net-LibIDN \
		p5-URI>=0:net/p5-URI \
		re2c>=.12.0:devel/re2c

.for dep in DCC DKIM MYSQL PGSQL PYZOR RAZOR RELAY_COUNTRY RLIMIT SPF_QUERY SSL
TEST_DEPENDS+=	${${dep}_RUN_DEPENDS}
.endfor

CONFLICTS?=	ja-spamassassin-[0-9]*

CPE_VENDOR=	apache

USES=		cpe perl5
USE_PERL5=	configure
USE_LDCONFIG=	yes

DATADIR=	${PREFIX}/share/spamassassin
DBDIR?=		/var/db
DOCSDIR=	${PREFIX}/share/doc/${PKGNAMEPREFIX}${PORTNAME}
ETCDIR?=	${PREFIX}/etc/mail/spamassassin

SPAMASSASSIN_CONTACT_ADDRESS?=	The administrator of that system
USERS?=		spamd
GROUPS?=	spamd
CONFIGURE_ARGS=	SYSCONFDIR="${PREFIX}/etc" \
		CONTACT_ADDRESS="${SPAMASSASSIN_CONTACT_ADDRESS}" \
		LOCALSTATEDIR="${DBDIR}/spamassassin" \
		BUILD_SPAMC=yes

OPTIONS_DEFINE=		AS_ROOT DOCS SSL
OPTIONS_GROUP=		DATABASE GPG PLUGINS
OPTIONS_GROUP_DATABASE=	MYSQL PGSQL
OPTIONS_GROUP_PLUGINS=	DCC DKIM PYZOR RAZOR RELAY_COUNTRY RLIMIT SPF_QUERY
OPTIONS_SINGLE=		GPG
OPTIONS_SINGLE_GPG=	GNUPG_NONE GNUPG GNUPG2
OPTIONS_DEFAULT=	AS_ROOT DKIM GNUPG SSL SPF_QUERY

AS_ROOT_DESC=		Run spamd as root (recommended)

DATABASE_DESC=		Optional user-config/bayes database backends

GPG_DESC=		GnuPG (for sa-update)
GNUPG_NONE_DESC=	Do not use GnuPG
GNUPG_DESC=		GnuPG 1 (security/gnupg1)
GNUPG2_DESC=		GnuPG 2 (security/gnupg)

PLUGINS_DESC=		Optional SpamAssassin plugins
DCC_DESC=		DCC digest list support (mail/dcc-dccd)
DKIM_DESC=		Verify DKIM records (mail/p5-Mail-DKIM)
PYZOR_DESC=		Pyzor digest list support (mail/pyzor)
RAZOR_DESC=		Vipul's Razor digest list support (mail/razor-agents)
RELAY_COUNTRY_DESC=	Location-based scoring (net/p5-GeoIP2)
RLIMIT_DESC=		Resource limits (devel/p5-BSD-Resource)
SPF_QUERY_DESC=		Verify SPF records (mail/p5-Mail-SPF)

SUB_FILES=	pkg-message
SUB_LIST+=	SPAMD_OWN="${USERS}:${GROUPS}"
PLIST_SUB+=	USER=${USERS} GROUP=${GROUPS}
OPTIONS_SUB=	yes

AS_ROOT_SUB_LIST=	RUN_AS_USER="-u ${USERS} -H /var/spool/spamd"
AS_ROOT_SUB_LIST_OFF=	RUN_AS_USER=
DCC_RUN_DEPENDS=	dcc-dccd>=1.3.111:mail/dcc-dccd
DKIM_RUN_DEPENDS=	p5-IO-Socket-SSL>=0:security/p5-IO-Socket-SSL \
			p5-Mail-DKIM>=0.37:mail/p5-Mail-DKIM \
			p5-Crypt-OpenSSL-RSA>=0.26_1:security/p5-Crypt-OpenSSL-RSA
GNUPG_RUN_DEPENDS=	gnupg1>=1.4.7:security/gnupg1
GNUPG2_RUN_DEPENDS=	gpg2:security/gnupg
MYSQL_RUN_DEPENDS=	p5-DBD-mysql>=0:databases/p5-DBD-mysql
PGSQL_RUN_DEPENDS=	p5-DBD-Pg>=0:databases/p5-DBD-Pg
PYZOR_RUN_DEPENDS=	pyzor:mail/pyzor
RAZOR_RUN_DEPENDS=	razor-agents>=2.84:mail/razor-agents \
			p5-Digest-SHA1>=2.13:security/p5-Digest-SHA1
RLIMIT_RUN_DEPENDS=	p5-BSD-Resource>=1.2911:devel/p5-BSD-Resource
RELAY_COUNTRY_RUN_DEPENDS=	p5-GeoIP2>=0:net/p5-GeoIP2 \
			p5-IP-Country>=0:net/p5-IP-Country
SPF_QUERY_RUN_DEPENDS=	p5-Mail-SPF>=0:mail/p5-Mail-SPF

SSL_USES=		ssl
SSL_RUN_DEPENDS=	p5-IO-Socket-SSL>=0:security/p5-IO-Socket-SSL
SSL_CONFIGURE_ON=	ENABLE_SSL=yes
SSL_CONFIGURE_OFF=	ENABLE_SSL=no

# plugin names in rules/*.pre, for enabling/disabling
DCC_INITVAR=		DCC
DKIM_INITVAR=		DKIM
PYZOR_INITVAR=		Pyzor
RAZOR_INITVAR=		Razor2
RELAY_COUNTRY_INITVAR=	RelayCountry
RLIMIT_INITVAR=		ResourceLimit
SPF_QUERY_INITVAR=	SPF

DOCS=		CREDITS Changes INSTALL NOTICE PACKAGING README TRADEMARK UPGRADE USAGE procmailrc.example
DOCSSQL=	README README.awl README.bayes awl_mysql.sql awl_pg.sql bayes_mysql.sql bayes_pg.sql userpref_mysql.sql userpref_pg.sql
DOCSLDAP=	README README.testing sa_test.ldif
PORTDOCS=	${DOCS} sql ldap

USE_RC_SUBR=	sa-spamd

ALL_TARGET=	all spamc/libspamc.so

.include <bsd.port.pre.mk>

.if ${PORT_OPTIONS:MSSL}
CFLAGS+=	-I${OPENSSLINC}
LDFLAGS+=	-L${OPENSSLLIB}
ALL_TARGET+=	spamc/libsslspamc.so
.endif

.if ${PORT_OPTIONS:MMYSQL} || ${PORT_OPTIONS:MPGSQL}
SUB_LIST+=	SQL_FLAG="-Q"
.else
SUB_LIST+=	SQL_FLAG=""
.endif

post-patch::
	${REINPLACE_CMD} -e 's,B_CONFDIR)/local.cf,B_CONFDIR)/local.cf.sample,g' \
		-e 's,B_CONFDIR)/init.pre,B_CONFDIR)/init.pre.sample,g' \
		-e 's,B_CONFDIR)/v310.pre,B_CONFDIR)/v310.pre.sample,g' \
		-e 's,B_CONFDIR)/v312.pre,B_CONFDIR)/v312.pre.sample,g' \
		-e 's,B_CONFDIR)/v320.pre,B_CONFDIR)/v320.pre.sample,g' \
		-e 's,B_CONFDIR)/v330.pre,B_CONFDIR)/v330.pre.sample,g' \
		-e 's,B_CONFDIR)/v340.pre,B_CONFDIR)/v340.pre.sample,g' \
		-e 's,B_CONFDIR)/v341.pre,B_CONFDIR)/v341.pre.sample,g' \
		-e 's,B_CONFDIR)/v342.pre,B_CONFDIR)/v342.pre.sample,g' \
		-e 's,B_CONFDIR)/v343.pre,B_CONFDIR)/v343.pre.sample,g' \
		-e 's/require DBI/0/' \
		${WRKSRC}/Makefile.PL
	${REINPLACE_CMD} -e '/^CC =/d; \
		s|@SSLCFLAGS@|& $${CFLAGS}|g' ${WRKSRC}/spamc/Makefile.in

.for var in ${OPTIONS_GROUP_PLUGINS}
.  if ${PORT_OPTIONS:M${var}}
	${REINPLACE_CMD} -e '/${${var}_INITVAR}/s/^\#.*loadplugin/loadplugin/' ${WRKSRC}/rules/*.pre
.  else
	${REINPLACE_CMD} -e '/${${var}_INITVAR}/s/^loadplugin/\# loadplugin/' ${WRKSRC}/rules/*.pre
.  endif
.endfor

pre-su-install:
	@${MKDIR} ${STAGEDIR}${DATADIR}
	${INSTALL_LIB} ${WRKSRC}/spamc/libspamc.so ${STAGEDIR}${PREFIX}/lib/libspamc.so.0
	${LN} -sf libspamc.so.0 ${STAGEDIR}${PREFIX}/lib/libspamc.so
.if ${PORT_OPTIONS:MSSL}
	${INSTALL_LIB} ${WRKSRC}/spamc/libsslspamc.so ${STAGEDIR}${PREFIX}/lib/libsslspamc.so.0
	${LN} -sf libsslspamc.so.0 ${STAGEDIR}${PREFIX}/lib/libsslspamc.so
.endif
	${INSTALL_DATA} ${WRKSRC}/spamc/libspamc.h ${STAGEDIR}${PREFIX}/include

post-install::
	${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/spamc
	@${MKDIR} ${STAGEDIR}/var/lib/spamassassin ${STAGEDIR}${DBDIR}/spamassassin ${STAGEDIR}/var/run/spamd
	@${MKDIR} ${STAGEDIR}${DOCSDIR}
	${INSTALL_DATA} ${DOCS:S|^|${WRKSRC}/|} ${STAGEDIR}${DOCSDIR}
	(cd ${WRKSRC} && ${COPYTREE_SHARE} "sql ldap" ${STAGEDIR}${DOCSDIR})

.include <bsd.port.post.mk>