rubymta 0.0.7 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/README.md +45 -0
- data/lib/rubymta/server.rb +1 -4
- data/lib/rubymta/version.rb +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5bdfc3b08cef62adc0c3dd94734b329bbb66b965
|
4
|
+
data.tar.gz: f1958ebd5cd0bc24c3614684b48183abc367648b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f68f8e2369d32a6275b05ceb741887e48dbb41c3e39515a100069968a59f46d94d7041160b8ffeebd653b13e130d340bab63a2f230ba9175ac5f42cb847f46b6
|
7
|
+
data.tar.gz: 70aad9ee52184c6b29015c6b0d8774569deed6155fa640188f6ad423529825181550e6f6112970b9aa045bfebb0f46cc405b80649cb9e71ad1d9f8e969da2047
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
# v0.0.7
|
2
|
+
|
3
|
+
* In `Receiver#starttls` I added a `begin` block to catch errors I believe are caused by spammers sending random data as a certificate. It's open at this moment, `rescue => e`, but as soon as I discover what the spammers are doing, I'll tighten this up by specifying the proper exception.
|
4
|
+
* I modified the "authentication mechanism not supported" message to add "use TLS and PLAIN." The LOGIN authentication will be added eventually, but it has been replaced by TLS+PLAIN in practice. The EHLO response specifies that only PLAIN is accepted, so if a sender uses LOGIN, it's not a commercial server, but a spammer.
|
5
|
+
* The README.md was updated with the app I use to drive queue_runner.
|
6
|
+
|
7
|
+
|
1
8
|
# v0.0.6
|
2
9
|
|
3
10
|
* Replaced a call to a legacy method 'add_block' to the proper method 'violation'. This bug only activated if the sender slammed the connection shut during the data block transfer.
|
data/README.md
CHANGED
@@ -60,6 +60,51 @@ I use Linux Mint, but any linux will work. I don't use Windows, so if you want t
|
|
60
60
|
* It can deliver locally via LMTP (for Dovecot) or remotely via a remote server.
|
61
61
|
* You can program your own app to use `queue_runner` or write your own queue runner.
|
62
62
|
|
63
|
+
The little app I use to run the queue manually (or with crontab) looks like this:
|
64
|
+
|
65
|
+
```ruby
|
66
|
+
#! /usr/bin/ruby
|
67
|
+
|
68
|
+
# Set up the $app hash for systemwide parameters
|
69
|
+
$app = {}
|
70
|
+
$app[:path] = Dir::pwd
|
71
|
+
$app[:mode] = ENV['MODE']
|
72
|
+
|
73
|
+
require 'sequel'
|
74
|
+
require 'sqlite3'
|
75
|
+
require 'rubymta/queue_runner'
|
76
|
+
require 'rubymta/item_of_mail'
|
77
|
+
|
78
|
+
# Make sure the MODE environmental variable is valid
|
79
|
+
if ['dev','live'].index(ENV['MODE']).nil?
|
80
|
+
msg = "Environmental variable MODE not set properly--must be dev or live"
|
81
|
+
LOG.fatal(msg)
|
82
|
+
puts msg
|
83
|
+
exit(1)
|
84
|
+
end
|
85
|
+
|
86
|
+
require_relative 'config'
|
87
|
+
include Config
|
88
|
+
|
89
|
+
# get setup and open the log
|
90
|
+
LOG = Logger::new(LogPathAndFile, LogFileLife)
|
91
|
+
LOG.formatter = proc do |severity, datetime, progname, msg|
|
92
|
+
pname = if progname then '('+progname+') ' else nil end
|
93
|
+
"#{datetime.strftime("%Y-%m-%d %H:%M:%S")} [#{severity}] #{pname}#{msg}\n"
|
94
|
+
end
|
95
|
+
|
96
|
+
# This changed as of Sequel v.4.40.0
|
97
|
+
# This is false by default, but was supposed to be
|
98
|
+
# true by default so we have to forcefully set it
|
99
|
+
Sequel.split_symbols = true
|
100
|
+
|
101
|
+
# Open the sqlite3 database for rubymta use
|
102
|
+
S3DB = Sequel.connect("sqlite://#{S3DBPath}")
|
103
|
+
LOG.info("Database '#{S3DBPath}' opened")
|
104
|
+
|
105
|
+
manually_run_queue_runner
|
106
|
+
```
|
107
|
+
|
63
108
|
### TODO!
|
64
109
|
|
65
110
|
* The queue runner is a very basic class. Bounce and forwarding need to be implemented. Since I add a rule to reject relays in my server, bounce messages only need to be delivered locally with LMTP. In a relaying server, bounce messages may be sent back to a remote sender; if that address is spoofed, and it turns out to be a trap address, your server will get blacklisted. Hence the rule: I don't relay. There is an example rule in the demo configuration which implements a "no relay" error message, and now you know why email admins don't allow relays anymore.
|
data/lib/rubymta/server.rb
CHANGED
@@ -94,10 +94,7 @@ end
|
|
94
94
|
|
95
95
|
# load the DKIM private key for this domain, if any
|
96
96
|
$app[:dkim] = nil
|
97
|
-
|
98
|
-
|
99
|
-
File::open("#{$app[:path]}/#{DKIMPrivateKeyFile}", "r") { |f| $app[:dkim] = f.read } if DKIMPrivateKeyFile
|
100
|
-
puts "--> *777* #{$app[:dkim]}"
|
97
|
+
File::open(DKIMPrivateKeyFile, "r") { |f| $app[:dkim] = f.read } if DKIMPrivateKeyFile
|
101
98
|
|
102
99
|
# MAIN server class -- starts at Server#start
|
103
100
|
class Server
|
data/lib/rubymta/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubymta
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael J. Welch, Ph.D.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-10-
|
11
|
+
date: 2017-10-13 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: RubyMta is an experimental mail transport agent written in Ruby. See
|
14
14
|
the README.
|