Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
P
pymilter
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Container registry
Model registry
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
misc
pymilter
Commits
d6ef1a40
Commit
d6ef1a40
authored
19 years ago
by
Stuart Gathman
Browse files
Options
Downloads
Patches
Plain Diff
Don't innoculate with SCREENED mail.
parent
2a4ab4e8
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
bms.py
+17
-11
17 additions, 11 deletions
bms.py
with
17 additions
and
11 deletions
bms.py
+
17
−
11
View file @
d6ef1a40
#!/usr/bin/env python
#!/usr/bin/env python
# A simple milter that has grown quite a bit.
# A simple milter that has grown quite a bit.
# $Log$
# $Log$
# Revision 1.23 2005/08/17 19:35:27 customdesigned
# Send DSN before adding message to quarantine.
#
# Revision 1.22 2005/08/11 22:17:58 customdesigned
# Revision 1.22 2005/08/11 22:17:58 customdesigned
# Consider SMTP AUTH connections internal.
# Consider SMTP AUTH connections internal.
#
#
...
@@ -665,7 +668,8 @@ class bmsMilter(Milter.Milter):
...
@@ -665,7 +668,8 @@ class bmsMilter(Milter.Milter):
self
.
new_headers
=
[]
self
.
new_headers
=
[]
self
.
recipients
=
[]
self
.
recipients
=
[]
self
.
cbv_needed
=
None
self
.
cbv_needed
=
None
t
=
parse_addr
(
f
.
lower
())
t
=
parse_addr
(
f
)
if
len
(
t
)
==
2
:
t
[
1
]
=
t
[
1
].
lower
()
self
.
canon_from
=
'
@
'
.
join
(
t
)
self
.
canon_from
=
'
@
'
.
join
(
t
)
# Check SMTP AUTH, also available:
# Check SMTP AUTH, also available:
...
@@ -718,14 +722,13 @@ class bmsMilter(Milter.Milter):
...
@@ -718,14 +722,13 @@ class bmsMilter(Milter.Milter):
if
not
(
self
.
internal_connection
or
self
.
trusted_relay
)
\
if
not
(
self
.
internal_connection
or
self
.
trusted_relay
)
\
and
self
.
connectip
and
spf
:
and
self
.
connectip
and
spf
:
return
self
.
check_spf
()
return
self
.
check_spf
()
self
.
spf
=
None
return
Milter
.
CONTINUE
return
Milter
.
CONTINUE
def
check_spf
(
self
):
def
check_spf
(
self
):
t
=
parse_addr
(
self
.
mailfrom
)
if
len
(
t
)
==
2
:
t
[
1
]
=
t
[
1
].
lower
()
receiver
=
self
.
receiver
receiver
=
self
.
receiver
q
=
spf
.
query
(
self
.
connectip
,
'
@
'
.
join
(
t
)
,
self
.
hello_name
,
receiver
=
receiver
,
q
=
spf
.
query
(
self
.
connectip
,
self
.
canon_from
,
self
.
hello_name
,
strict
=
False
)
receiver
=
receiver
,
strict
=
False
)
q
.
set_default_explanation
(
q
.
set_default_explanation
(
'
SPF fail: see http://openspf.com/why.html?sender=%s&ip=%s
'
%
(
q
.
s
,
q
.
i
))
'
SPF fail: see http://openspf.com/why.html?sender=%s&ip=%s
'
%
(
q
.
s
,
q
.
i
))
res
,
code
,
txt
=
q
.
check
()
res
,
code
,
txt
=
q
.
check
()
...
@@ -1154,23 +1157,26 @@ class bmsMilter(Milter.Milter):
...
@@ -1154,23 +1157,26 @@ class bmsMilter(Milter.Milter):
screener
=
dspam_screener
[
self
.
id
%
len
(
dspam_screener
)]
screener
=
dspam_screener
[
self
.
id
%
len
(
dspam_screener
)]
if
not
ds
.
check_spam
(
screener
,
txt
,
self
.
recipients
,
if
not
ds
.
check_spam
(
screener
,
txt
,
self
.
recipients
,
classify
=
True
,
quarantine
=
False
):
classify
=
True
,
quarantine
=
False
):
self
.
fp
=
None
if
self
.
reject_spam
:
if
self
.
reject_spam
:
self
.
log
(
"
DSPAM:
"
,
screener
,
self
.
log
(
"
DSPAM:
"
,
screener
,
'
REJECT: X-DSpam-Score: %f
'
%
ds
.
probability
)
'
REJECT: X-DSpam-Score: %f
'
%
ds
.
probability
)
self
.
setreply
(
'
550
'
,
'
5.7.1
'
,
'
Your Message looks spammy
'
)
self
.
setreply
(
'
550
'
,
'
5.7.1
'
,
'
Your Message looks spammy
'
)
self
.
fp
=
None
return
Milter
.
REJECT
return
Milter
.
REJECT
self
.
log
(
"
DSPAM:
"
,
screener
,
"
SCREENED
"
)
self
.
log
(
"
DSPAM:
"
,
screener
,
"
SCREENED
"
)
if
self
.
spf
:
if
self
.
spf
:
# check that sender accepts quarantine DSN
# check that sender accepts quarantine DSN
msg
=
mime
.
message_from_file
(
StringIO
.
StringIO
(
txt
))
self
.
fp
.
seek
(
0
)
msg
=
mime
.
message_from_file
(
self
.
fp
)
rc
=
self
.
send_dsn
(
self
.
spf
,
msg
,
'
quarantine.txt
'
)
rc
=
self
.
send_dsn
(
self
.
spf
,
msg
,
'
quarantine.txt
'
)
del
msg
if
rc
!=
Milter
.
CONTINUE
:
if
rc
!=
Milter
.
CONTINUE
:
self
.
fp
=
None
return
rc
return
rc
ds
.
check_spam
(
screener
,
txt
,
self
.
recipients
,
quarantine
=
True
,
del
msg
force_result
=
dspam
.
DSR_ISSPAM
)
if
not
ds
.
check_spam
(
screener
,
txt
,
self
.
recipients
,
classify
=
True
):
self
.
fp
=
None
return
Milter
.
DISCARD
return
Milter
.
DISCARD
# Message no longer looks spammy, deliver normally. We lied in the DSN.
return
modified
return
modified
def
eom
(
self
):
def
eom
(
self
):
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment