Support smfi_chgfrom and smfi_addrcpt_par.
This commit is contained in:
+51
-3
@@ -35,6 +35,9 @@ $ python setup.py help
|
||||
libraries=["milter","smutil","resolv"]
|
||||
|
||||
* $Log$
|
||||
* Revision 1.11 2007/09/25 02:26:29 customdesigned
|
||||
* Update license.
|
||||
*
|
||||
* Revision 1.10 2006/02/12 02:00:42 customdesigned
|
||||
* Resolve FIXME for wrap_close.
|
||||
*
|
||||
@@ -339,6 +342,7 @@ static char milter_set_flags__doc__[] =
|
||||
Set flags for filter capabilities; OR of one or more of:\n\
|
||||
ADDHDRS - filter may add headers\n\
|
||||
CHGBODY - filter may replace body\n\
|
||||
CHGFROM - filter may replace body\n\
|
||||
ADDRCPT - filter may add recipients\n\
|
||||
DELRCPT - filter may delete recipients\n\
|
||||
CHGHDRS - filter may change/delete headers";
|
||||
@@ -1013,6 +1017,30 @@ milter_addheader(PyObject *self, PyObject *args) {
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef SMFIF_CHGFROM
|
||||
static char milter_chgfrom__doc__[] =
|
||||
"chgfrom(sender,params) -> None\n\
|
||||
Change the envelope sender (MAIL From) of the current message.\n\
|
||||
A filter which calls smfi_chgfrom must have set the CHGFROM flag\n\
|
||||
in set_flags() before calling register.\n\
|
||||
This function can only be called from the EOM callback.";
|
||||
static PyObject *
|
||||
milter_chgfrom(PyObject *self, PyObject *args) {
|
||||
char *sender;
|
||||
char *params;
|
||||
SMFICTX *ctx;
|
||||
PyThreadState *t;
|
||||
|
||||
if (!PyArg_ParseTuple(args, "sz:chgfrom", &sender, ¶ms))
|
||||
return NULL;
|
||||
ctx = _find_context(self);
|
||||
if (ctx == NULL) return NULL;
|
||||
t = PyEval_SaveThread();
|
||||
return _thread_return(t,smfi_chgfrom(ctx, sender, params),
|
||||
"cannot change sender");
|
||||
}
|
||||
#endif
|
||||
|
||||
static char milter_chgheader__doc__[] =
|
||||
"chgheader(field, int, value) -> None\n\
|
||||
Change/delete a header in the message. \n\
|
||||
@@ -1042,22 +1070,33 @@ milter_chgheader(PyObject *self, PyObject *args) {
|
||||
}
|
||||
|
||||
static char milter_addrcpt__doc__[] =
|
||||
"addrcpt(string) -> None\n\
|
||||
"addrcpt(string,params=None) -> None\n\
|
||||
Add a recipient to the envelope. It must be in the same format\n\
|
||||
as is passed to the envrcpt callback in the first tuple element.\n\
|
||||
If params is used, you must pass ADDRCPT_PAR to set_flags().\n\
|
||||
This function can only be called from the EOM callback.";
|
||||
|
||||
static PyObject *
|
||||
milter_addrcpt(PyObject *self, PyObject *args) {
|
||||
char *rcpt;
|
||||
char *params = 0;
|
||||
SMFICTX *ctx;
|
||||
PyThreadState *t;
|
||||
int rc;
|
||||
|
||||
if (!PyArg_ParseTuple(args, "s:addrcpt", &rcpt)) return NULL;
|
||||
if (!PyArg_ParseTuple(args, "s|z:addrcpt", &rcpt)) return NULL;
|
||||
ctx = _find_context(self);
|
||||
if (ctx == NULL) return NULL;
|
||||
t = PyEval_SaveThread();
|
||||
return _thread_return(t,smfi_addrcpt(ctx, rcpt), "cannot add recipient");
|
||||
if (params)
|
||||
#ifdef SMFIF_ADDRCPT_PAR
|
||||
rc = smfi_addrcpt_par(ctx,rcpt,params);
|
||||
#else
|
||||
rc = MI_FAILURE;
|
||||
#endif
|
||||
else
|
||||
rc = smfi_addrcpt(ctx,rcpt);
|
||||
return _thread_return(t,rc, "cannot add recipient");
|
||||
}
|
||||
|
||||
static char milter_delrcpt__doc__[] =
|
||||
@@ -1198,6 +1237,9 @@ static PyMethodDef context_methods[] = {
|
||||
#endif
|
||||
#ifdef SMFIR_PROGRESS
|
||||
{ "progress", milter_progress, METH_VARARGS, milter_progress__doc__},
|
||||
#endif
|
||||
#ifdef SMFIF_CHGFROM
|
||||
{ "chgfrom", milter_chgfrom, METH_VARARGS, milter_chgfrom__doc__},
|
||||
#endif
|
||||
{ NULL, NULL }
|
||||
};
|
||||
@@ -1299,6 +1341,9 @@ initmilter(void) {
|
||||
setitem(d,"CHGBODY", SMFIF_CHGBODY);
|
||||
setitem(d,"MODBODY", SMFIF_MODBODY);
|
||||
setitem(d,"ADDRCPT", SMFIF_ADDRCPT);
|
||||
#ifdef SMFIF_ADDRCPT_PAR
|
||||
setitem(d,"ADDRCPT_PAR", SMFIF_ADDRCPT_PAR);
|
||||
#endif
|
||||
setitem(d,"DELRCPT", SMFIF_DELRCPT);
|
||||
setitem(d,"CHGHDRS", SMFIF_CHGHDRS);
|
||||
setitem(d,"V1_ACTS", SMFI_V1_ACTS);
|
||||
@@ -1306,6 +1351,9 @@ initmilter(void) {
|
||||
setitem(d,"CURR_ACTS", SMFI_CURR_ACTS);
|
||||
#ifdef SMFIF_QUARANTINE
|
||||
setitem(d,"QUARANTINE",SMFIF_QUARANTINE);
|
||||
#endif
|
||||
#ifdef SMFIF_CHGFROM
|
||||
setitem(d,"CHGFROM",SMFIF_CHGFROM);
|
||||
#endif
|
||||
setitem(d,"CONTINUE", SMFIS_CONTINUE);
|
||||
setitem(d,"REJECT", SMFIS_REJECT);
|
||||
|
||||
+3
-1
@@ -3,7 +3,7 @@
|
||||
# rpmbuild -ba --target=i386,noarch pymilter.spec
|
||||
|
||||
%define __python python2.4
|
||||
%define version 0.8.11
|
||||
%define version 0.8.12
|
||||
%define release 1%{?dist}.py24
|
||||
# what version of RH are we building for?
|
||||
%define redhat7 0
|
||||
@@ -266,6 +266,8 @@ chmod a+x $RPM_BUILD_ROOT%{libdir}/start.sh
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
%changelog
|
||||
* Fri Nov 12 2008 Stuart Gathman <stuart@bmsi.com> 0.8.12-1
|
||||
- Support chgfrom and addrcpt_par
|
||||
* Sat Oct 11 2008 Stuart Gathman <stuart@bmsi.com> 0.8.11-1
|
||||
- Support greylisting
|
||||
- Recognize vacation messages as autoreplies.
|
||||
|
||||
@@ -16,7 +16,7 @@ if sys.version < '2.2.3':
|
||||
DistributionMetadata.download_url = None
|
||||
|
||||
# NOTE: importing Milter to obtain version fails when milter.so not built
|
||||
setup(name = "pymilter", version = '0.8.11',
|
||||
setup(name = "pymilter", version = '0.8.12',
|
||||
description="Python interface to sendmail milter API",
|
||||
long_description="""\
|
||||
This is a python extension module to enable python scripts to
|
||||
|
||||
Reference in New Issue
Block a user