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
c5b21695
Commit
c5b21695
authored
19 years ago
by
Stuart Gathman
Browse files
Options
Downloads
Patches
Plain Diff
Remove default templates. Scrub test.
parent
2e42eea3
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
Milter/dsn.py
+21
-94
21 additions, 94 deletions
Milter/dsn.py
with
21 additions
and
94 deletions
Milter/dsn.py
+
21
−
94
View file @
c5b21695
...
...
@@ -4,6 +4,7 @@
# Send DSNs, do call back verification,
# and generate DSN messages from a template
# $Log$
import
smtplib
import
spf
...
...
@@ -11,96 +12,6 @@ import socket
from
email.Message
import
Message
import
Milter
nospf_msg
=
"""
Subject: Critical mail server configuration error
To: %(sender)s
From: postmaster@%(receiver)s
Auto-Submitted: auto-generated (configuration error)
This is an automatically generated Delivery Status Notification.
THIS IS A WARNING MESSAGE ONLY.
YOU DO *NOT* NEED TO RESEND YOUR MESSAGE.
Delivery to the following recipients has been delayed.
%(rcpt)s
Subject: %(subject)s
Someone at IP address %(connectip)s sent an email claiming
to be from %(sender)s.
If that wasn
'
t you, then your domain, %(sender_domain)s,
was forged - i.e. used without your knowlege or authorization by
someone attempting to steal your mail identity. This is a very
serious problem, and you need to provide authentication for your
SMTP (email) servers to prevent criminals from forging your
domain. The simplest step is usually to publish an SPF record
with your Sender Policy.
For more information, see: http://spfhelp.net
I hate to annoy you with a DSN (Delivery Status
Notification) from a possibly forged email, but since you
have not published a sender policy, there is no other way
of bringing this to your attention.
If it *was* you that sent the email, then your email domain
or configuration is in error. If you don
'
t know anything
about mail servers, then pass this on to your SMTP (mail)
server administrator. We have accepted the email anyway, in
case it is important, but we couldn
'
t find anything about
the mail submitter at %(connectip)s to distinguish it from a
zombie (compromised/infected computer - usually a Windows
PC). There was no PTR record for its IP address (PTR names
that contain the IP address don
'
t count). RFC2821 requires
that your hello name be a FQN (Fully Qualified domain Name,
i.e. at least one dot) that resolves to the IP address of
the mail sender. In addition, just like for PTR, we don
'
t
accept a helo name that contains the IP, since this doesn
'
t
help to identify you. The hello name you used,
%(heloname)s, was invalid.
Furthermore, there was no SPF record for the sending domain
%(sender_domain)s. We even tried to find its IP in any A or
MX records for your domain, but that failed also. We really
should reject mail from anonymous mail clients, but in case
it is important, we are accepting it anyway.
We are sending you this message to alert you to the fact that
Either - Someone is forging your domain.
Or - You have problems with your email configuration.
Or - Possibly both.
If you need further assistance, please do not hesitate to
contact me again.
Kind regards,
postmaster@%(receiver)s
"""
softfail_msg
=
"""
Subject: SPF softfail (POSSIBLE FORGERY)
To: %(sender)s
From: postmaster@%(receiver)s
Auto-Submitted: auto-generated (configuration error)
This is an automatically generated Delivery Status Notification.
THIS IS A WARNING MESSAGE ONLY.
YOU DO *NOT* NEED TO RESEND YOUR MESSAGE.
Delivery to the following recipients has been delayed.
%(rcpt)s
Subject: %(subject)s
Received-SPF: %(spf_result)s
"""
def
send_dsn
(
mailfrom
,
receiver
,
msg
=
None
):
"""
Send DSN. If msg is None, do callback verification.
Mailfrom is original sender we are sending DSN or CBV to.
...
...
@@ -185,14 +96,30 @@ def create_msg(q,rcptlist,origmsg=None,template=None):
name
,
val
=
ln
.
split
(
'
:
'
,
1
)
msg
.
add_header
(
name
,(
val
%
locals
()).
strip
())
msg
.
set_payload
(
body
%
locals
())
# add headers if missing from old template
if
'
to
'
not
in
msg
:
msg
.
add_header
(
'
To
'
,
sender
)
if
'
from
'
not
in
msg
:
msg
.
add_header
(
'
From
'
,
'
postmaster@%s
'
%
receiver
)
if
'
auto-submitted
'
not
in
msg
:
msg
.
add_header
(
'
Auto-Submitted
'
,
'
auto-generated
'
)
return
msg
if
__name__
==
'
__main__
'
:
q
=
spf
.
query
(
'
192.168.9.50
'
,
'
SRS0=pmeHL=RH=bmsi.com=stuart@bmsi.com
'
,
'
bmsred.bmsi.com
'
,
receiver
=
'
mail.bmsi.com
'
)
msg
=
create_msg
(
q
,[
'
charlie@jsconnor.com
'
],
None
,
None
)
'
SRS0=pmeHL=RH==stuart@example.com
'
,
'
red.example.com
'
,
receiver
=
'
mail.example.com
'
)
q
.
result
=
'
softfail
'
q
.
perm_error
=
None
msg
=
create_msg
(
q
,[
'
charlie@example.com
'
],
None
,
"""
From: postmaster@%(receiver)s
To: %(sender)s
Subject: Test
Test DSN template
"""
)
print
msg
.
as_string
()
# print send_dsn(f,msg.as_string())
print
send_dsn
(
q
.
s
,
'
mail.
bmsi
.com
'
,
msg
.
as_string
())
#
print send_dsn(q.s,'mail.
example
.com',msg.as_string())
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