1
0
mirror of https://git.FreeBSD.org/ports.git synced 2025-02-06 11:41:52 +00:00

[MAINTAINER] Update port: mail/policyd add libgnugetopt dependency

+ Add devel/libgnugetopt dependency if OSVERSION < 500041
	+ Include (-s|--softfailreject) options for SOFTFAIL reject (~all)
	+ Fix *optstring in getopt(), old options don't work.

PR:		75386
Submitted by:	Marcus Grando <marcus@corp.grupos.com.br>
This commit is contained in:
Edwin Groothuis 2004-12-22 21:11:22 +00:00
parent f1aa6ae264
commit 7536f2daac
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=124853
4 changed files with 216 additions and 0 deletions

View File

@ -7,6 +7,7 @@
PORTNAME= policyd
PORTVERSION= 1.0.1
PORTREVISION= 1
CATEGORIES= mail
MASTER_SITES= http://www.libspf2.org/patch/
@ -19,6 +20,7 @@ CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include"
CONFIGURE_ENV+= CFLAGS="-I${LOCALBASE}/include"
CONFIGURE_ENV+= LDFLAGS="-L${LOCALBASE}/lib"
GNU_CONFIGURE= yes
USE_GETOPT_LONG= yes
.if !defined(NOPORTDOCS)
PORTDOCS= *

View File

@ -0,0 +1,106 @@
--- policyd.c.orig Thu Jul 8 18:42:25 2004
+++ policyd.c Wed Dec 22 15:55:22 2004
@@ -76,6 +76,7 @@
char *localpolicy;
char *explanation;
int trustedforwarder;
+ int softfailreject;
int debug;
} config_t;
@@ -106,6 +107,7 @@
static const struct option longopts[] = {
{ "localpolicy", required_argument, NULL, 'l', },
{ "trustedforwarder", no_argument, NULL, 't', },
+ { "softfailreject", no_argument, NULL, 's', },
{ "explanation", required_argument, NULL, 'x', },
{ "debug", optional_argument, NULL, 'd', },
{ "help", no_argument, NULL, 'h', },
@@ -119,7 +121,7 @@
#else
#define DOC_LONGOPT(l, v, t, p1) do { } while(0)
#endif
-static const char *shortopts = "a:h";
+static const char *shortopts = "l:x:d:tsh";
#define DOC_OPT(s, l, v, t, p0, p1) do { \
fprintf(stderr, " -%c%c%s%*s" t "\n", \
@@ -137,10 +139,12 @@
"Set the SPF local policy.", 21, 10);
DOC_OPT('t', "trustedforwarder", NULL,
"Use the trusted-forwarder.com whitelist.", 29, 13);
+ DOC_OPT('s', "softfailreject", NULL,
+ "Reject SOFTFAIL.", 29, 15);
DOC_OPT('x', "explanation", "<explanation>",
"Set the SPF explanation.", 16, 5);
- DOC_OPT('d', "debug", "[<level>]",
- "Set the debug level.", 20, 15);
+ DOC_OPT('d', "debug", "<level>",
+ "Set the debug level.", 22, 17);
DOC_OPT('h', "help", NULL,
"Display this help.", 29, 25);
}
@@ -249,7 +253,7 @@
}
static void
-process_request(request_t *req)
+process_request(request_t *req, config_t *conf)
{
SPF_output_t output;
@@ -287,6 +291,16 @@
: ""));
break;
case SPF_RESULT_SOFTFAIL:
+ if (conf->softfailreject == 1) {
+ snprintf(req->result, RESULTSIZE,
+ POSTFIX_REJECT " %s",
+ (output.smtp_comment
+ ? output.smtp_comment
+ : (output.header_comment
+ ? output.header_comment
+ : "")));
+ break;
+ }
case SPF_RESULT_NEUTRAL:
case SPF_RESULT_UNKNOWN:
case SPF_RESULT_NONE:
@@ -315,6 +329,11 @@
argv0 = argv[0];
+ config.localpolicy = NULL;
+ config.explanation = NULL;
+ config.trustedforwarder = 0;
+ config.softfailreject = 0;
+ config.debug = 0;
while ((c =
#ifdef HAVE_GETOPT_LONG
getopt_long(argc, argv, shortopts, longopts, &idx)
@@ -329,12 +348,15 @@
case 't':
config.trustedforwarder = 1;
break;
+ case 's':
+ config.softfailreject = 1;
+ break;
case 'x':
config.explanation = optarg;
break;
case 'd':
if (optarg)
- config.debug = atol(optarg);
+ config.debug = atoi(optarg);
else
config.debug = 1;
break;
@@ -366,7 +388,7 @@
CHECK(req.client_ip, "client_address")
else CHECK(req.sender_address, "sender")
else CHECK(req.helo_address, "helo_name")
- else process_request(&req);
+ else process_request(&req, &config);
req.result[RESULTSIZE - 1] = '\0';
printf("action=%s\n\n", req.result);

View File

@ -7,6 +7,7 @@
PORTNAME= policyd
PORTVERSION= 1.0.1
PORTREVISION= 1
CATEGORIES= mail
MASTER_SITES= http://www.libspf2.org/patch/
@ -19,6 +20,7 @@ CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include"
CONFIGURE_ENV+= CFLAGS="-I${LOCALBASE}/include"
CONFIGURE_ENV+= LDFLAGS="-L${LOCALBASE}/lib"
GNU_CONFIGURE= yes
USE_GETOPT_LONG= yes
.if !defined(NOPORTDOCS)
PORTDOCS= *

View File

@ -0,0 +1,106 @@
--- policyd.c.orig Thu Jul 8 18:42:25 2004
+++ policyd.c Wed Dec 22 15:55:22 2004
@@ -76,6 +76,7 @@
char *localpolicy;
char *explanation;
int trustedforwarder;
+ int softfailreject;
int debug;
} config_t;
@@ -106,6 +107,7 @@
static const struct option longopts[] = {
{ "localpolicy", required_argument, NULL, 'l', },
{ "trustedforwarder", no_argument, NULL, 't', },
+ { "softfailreject", no_argument, NULL, 's', },
{ "explanation", required_argument, NULL, 'x', },
{ "debug", optional_argument, NULL, 'd', },
{ "help", no_argument, NULL, 'h', },
@@ -119,7 +121,7 @@
#else
#define DOC_LONGOPT(l, v, t, p1) do { } while(0)
#endif
-static const char *shortopts = "a:h";
+static const char *shortopts = "l:x:d:tsh";
#define DOC_OPT(s, l, v, t, p0, p1) do { \
fprintf(stderr, " -%c%c%s%*s" t "\n", \
@@ -137,10 +139,12 @@
"Set the SPF local policy.", 21, 10);
DOC_OPT('t', "trustedforwarder", NULL,
"Use the trusted-forwarder.com whitelist.", 29, 13);
+ DOC_OPT('s', "softfailreject", NULL,
+ "Reject SOFTFAIL.", 29, 15);
DOC_OPT('x', "explanation", "<explanation>",
"Set the SPF explanation.", 16, 5);
- DOC_OPT('d', "debug", "[<level>]",
- "Set the debug level.", 20, 15);
+ DOC_OPT('d', "debug", "<level>",
+ "Set the debug level.", 22, 17);
DOC_OPT('h', "help", NULL,
"Display this help.", 29, 25);
}
@@ -249,7 +253,7 @@
}
static void
-process_request(request_t *req)
+process_request(request_t *req, config_t *conf)
{
SPF_output_t output;
@@ -287,6 +291,16 @@
: ""));
break;
case SPF_RESULT_SOFTFAIL:
+ if (conf->softfailreject == 1) {
+ snprintf(req->result, RESULTSIZE,
+ POSTFIX_REJECT " %s",
+ (output.smtp_comment
+ ? output.smtp_comment
+ : (output.header_comment
+ ? output.header_comment
+ : "")));
+ break;
+ }
case SPF_RESULT_NEUTRAL:
case SPF_RESULT_UNKNOWN:
case SPF_RESULT_NONE:
@@ -315,6 +329,11 @@
argv0 = argv[0];
+ config.localpolicy = NULL;
+ config.explanation = NULL;
+ config.trustedforwarder = 0;
+ config.softfailreject = 0;
+ config.debug = 0;
while ((c =
#ifdef HAVE_GETOPT_LONG
getopt_long(argc, argv, shortopts, longopts, &idx)
@@ -329,12 +348,15 @@
case 't':
config.trustedforwarder = 1;
break;
+ case 's':
+ config.softfailreject = 1;
+ break;
case 'x':
config.explanation = optarg;
break;
case 'd':
if (optarg)
- config.debug = atol(optarg);
+ config.debug = atoi(optarg);
else
config.debug = 1;
break;
@@ -366,7 +388,7 @@
CHECK(req.client_ip, "client_address")
else CHECK(req.sender_address, "sender")
else CHECK(req.helo_address, "helo_name")
- else process_request(&req);
+ else process_request(&req, &config);
req.result[RESULTSIZE - 1] = '\0';
printf("action=%s\n\n", req.result);