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
8bc182cb
Commit
8bc182cb
authored
19 years ago
by
Stuart Gathman
Browse files
Options
Downloads
Patches
Plain Diff
Move Received-SPF header to top.
parent
fb3c140d
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
+14
-10
14 additions, 10 deletions
bms.py
with
14 additions
and
10 deletions
bms.py
+
14
−
10
View file @
8bc182cb
#!/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.43 2005/12/09 16:54:01 customdesigned
# Select neutral DSN template for best_guess
#
# Revision 1.42 2005/12/01 22:42:32 customdesigned
# Revision 1.42 2005/12/01 22:42:32 customdesigned
# improve gossip support.
# improve gossip support.
# Initialize srs_domain from srs.srs config property. Should probably
# Initialize srs_domain from srs.srs config property. Should probably
...
@@ -779,8 +782,8 @@ class bmsMilter(Milter.Milter):
...
@@ -779,8 +782,8 @@ class bmsMilter(Milter.Milter):
# addheader can only be called from eom(). This accumulates added headers
# addheader can only be called from eom(). This accumulates added headers
# which can then be applied by alter_headers()
# which can then be applied by alter_headers()
def
add_header
(
self
,
name
,
val
):
def
add_header
(
self
,
name
,
val
,
idx
=-
1
):
self
.
new_headers
.
append
((
name
,
val
))
self
.
new_headers
.
append
((
name
,
val
,
idx
))
self
.
log
(
'
%s: %s
'
%
(
name
,
val
))
self
.
log
(
'
%s: %s
'
%
(
name
,
val
))
def
connect
(
self
,
hostname
,
unused
,
hostaddr
):
def
connect
(
self
,
hostname
,
unused
,
hostaddr
):
...
@@ -1023,10 +1026,11 @@ class bmsMilter(Milter.Milter):
...
@@ -1023,10 +1026,11 @@ class bmsMilter(Milter.Milter):
elif
policy
!=
'
OK
'
:
elif
policy
!=
'
OK
'
:
self
.
log
(
'
REJECT: no PTR, HELO or SPF
'
)
self
.
log
(
'
REJECT: no PTR, HELO or SPF
'
)
self
.
setreply
(
'
550
'
,
'
5.7.1
'
,
self
.
setreply
(
'
550
'
,
'
5.7.1
'
,
"
You must have a
reverse lookup
or publish SPF: http://openspf.org
"
,
"
You must have a
valid HELO
or publish SPF: http://
www.
openspf.org
"
,
"
Contact your mail administrator IMMEDIATELY! Your mail server is
"
,
"
Contact your mail administrator IMMEDIATELY! Your mail server is
"
,
"
severely misconfigured. It has no PTR record (dynamic PTR records
"
,
"
severely misconfigured. It has no PTR record (dynamic PTR records
"
,
"
that contain your IP don
'
t count), an invalid HELO, and no SPF record.
"
"
that contain your IP don
'
t count), an invalid or dynamic HELO,
"
,
"
and no SPF record.
"
)
)
return
Milter
.
REJECT
return
Milter
.
REJECT
if
res
in
(
'
deny
'
,
'
fail
'
):
if
res
in
(
'
deny
'
,
'
fail
'
):
...
@@ -1090,7 +1094,7 @@ class bmsMilter(Milter.Milter):
...
@@ -1090,7 +1094,7 @@ class bmsMilter(Milter.Milter):
self
.
log
(
'
TEMPFAIL: SPF %s %i %s
'
%
(
res
,
code
,
txt
))
self
.
log
(
'
TEMPFAIL: SPF %s %i %s
'
%
(
res
,
code
,
txt
))
self
.
setreply
(
str
(
code
),
'
4.3.0
'
,
txt
)
self
.
setreply
(
str
(
code
),
'
4.3.0
'
,
txt
)
return
Milter
.
TEMPFAIL
return
Milter
.
TEMPFAIL
self
.
add_header
(
'
Received-SPF
'
,
q
.
get_header
(
res
,
receiver
))
self
.
add_header
(
'
Received-SPF
'
,
q
.
get_header
(
res
,
receiver
)
,
0
)
self
.
spf
=
q
self
.
spf
=
q
if
res
==
'
pass
'
and
auto_whitelist
.
has_key
(
self
.
canon_from
):
if
res
==
'
pass
'
and
auto_whitelist
.
has_key
(
self
.
canon_from
):
self
.
whitelist
=
True
self
.
whitelist
=
True
...
@@ -1285,7 +1289,7 @@ class bmsMilter(Milter.Milter):
...
@@ -1285,7 +1289,7 @@ class bmsMilter(Milter.Milter):
if
not
self
.
fp
:
return
Milter
.
TEMPFAIL
# not seen by envfrom
if
not
self
.
fp
:
return
Milter
.
TEMPFAIL
# not seen by envfrom
if
not
self
.
data_allowed
:
if
not
self
.
data_allowed
:
return
self
.
forged_bounce
()
return
self
.
forged_bounce
()
for
name
,
val
in
self
.
new_headers
:
for
name
,
val
,
idx
in
self
.
new_headers
:
self
.
fp
.
write
(
"
%s: %s
\n
"
%
(
name
,
val
))
# add new headers to buffer
self
.
fp
.
write
(
"
%s: %s
\n
"
%
(
name
,
val
))
# add new headers to buffer
self
.
fp
.
write
(
"
\n
"
)
# terminate headers
self
.
fp
.
write
(
"
\n
"
)
# terminate headers
# log when neither sender nor from domains matches mail from domain
# log when neither sender nor from domains matches mail from domain
...
@@ -1578,8 +1582,8 @@ class bmsMilter(Milter.Milter):
...
@@ -1578,8 +1582,8 @@ class bmsMilter(Milter.Milter):
self
.
addrcpt
(
self
.
mailfrom
)
self
.
addrcpt
(
self
.
mailfrom
)
else
:
else
:
self
.
alter_recipients
(
self
.
discard_list
,
self
.
redirect_list
)
self
.
alter_recipients
(
self
.
discard_list
,
self
.
redirect_list
)
for
name
,
val
in
self
.
new_headers
:
for
name
,
val
,
idx
in
self
.
new_headers
:
self
.
addheader
(
name
,
val
)
self
.
addheader
(
name
,
val
,
idx
)
if
self
.
cbv_needed
:
if
self
.
cbv_needed
:
q
=
self
.
cbv_needed
q
=
self
.
cbv_needed
...
...
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