Skip to content

Commit adaed13

Browse files
authored
Merge pull request #210 from whyscream/postfix-tls-features
Parse postfix TLS features
2 parents 3c13177 + baab2d4 commit adaed13

18 files changed

+96
-8
lines changed

.github/workflows/test_config_syntax.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ jobs:
55
runs-on: ubuntu-latest
66
strategy:
77
matrix:
8-
logstash-version: ['8.14.1', '7.17.22']
8+
logstash-version: ['9.2.1', '8.19.7', '7.17.28']
99
steps:
1010
- name: Checkout code
1111
uses: actions/checkout@v4

.github/workflows/test_grok_patterns.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@ jobs:
1010
submodules: true
1111
- uses: ruby/setup-ruby@v1
1212
with:
13-
ruby-version: '3.2'
13+
ruby-version: '3.4'
1414
- run: gem install jls-grok minitest
1515
- run: ruby test/test.rb

50-filter-postfix.conf

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,14 @@ filter {
222222
remove_field => [ "postfix_delays" ]
223223
}
224224
}
225+
if [postfix_tls] {
226+
grok {
227+
patterns_dir => "/etc/logstash/patterns.d"
228+
match => ["postfix_tls", "^%{POSTFIX_TLS_FEATURES}$"]
229+
tag_on_failure => [ "_grok_kv_postfix_tls_nomatch" ]
230+
remove_field => [ "postfix_tls" ]
231+
}
232+
}
225233
}
226234

227235
# process command counter data if it exists
@@ -289,6 +297,12 @@ filter {
289297
"postfix_delay_transmission", "float",
290298
"postfix_postscreen_violation_time", "float"
291299
]
300+
gsub => [
301+
# rewrite some extracted values
302+
"postfix_tls_policy_undecided", "\?", "true",
303+
"postfix_requiretls_policy_undecided", "\?", "true",
304+
"postfix_requiretls_policy_violation", "\!", "true",
305+
"postfix_requiretls", "requiretls", "true"
306+
]
292307
}
293308
}
294-

postfix.grok

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,10 @@ POSTFIX_VERIFY_CACHE cache %{DATA} (?<postfix_verify_cleanup_type>(full|partial)
121121
# local patterns
122122
POSTFIX_LOCAL_DELIVERY %{POSTFIX_KEYVALUE} status=%{STATUS_WORD:postfix_status}( \(%{GREEDYDATA:postfix_local_response}\))?
123123

124+
# TLS features
125+
POSTFIX_TLS_FEAT_REQUIRETLS (?<postfix_requiretls_policy_violation>\!)?(?<postfix_requiretls>requiretls)(:(?<postfix_requiretls_downgrade_level>\w+))?(?<postfix_requiretls_policy_undecided>\?)?
126+
POSTFIX_TLS_FEATURES (?<postfix_tls_security_level>\w+)(:(?<postfix_tls_downgrade_level>\w+))?(?<postfix_tls_policy_undecided>\?)?(/%{POSTFIX_TLS_FEAT_REQUIRETLS})?
127+
124128
# aggregate all patterns
125129
POSTFIX_SMTPD %{POSTFIX_SMTPD_CONNECT}|%{POSTFIX_SMTPD_DISCONNECT}|%{POSTFIX_SMTPD_LOSTCONN}|%{POSTFIX_SMTPD_NOQUEUE}|%{POSTFIX_SMTPD_PIPELINING}|%{POSTFIX_TLSCONN}|%{POSTFIX_WARNING}|%{POSTFIX_SMTPD_PROXY}|%{POSTFIX_KEYVALUE}
126130
POSTFIX_CLEANUP %{POSTFIX_CLEANUP_MESSAGEID}|%{POSTFIX_CLEANUP_MILTER}|%{POSTFIX_CLEANUP_PREPEND}|%{POSTFIX_WARNING}|%{POSTFIX_KEYVALUE}

test/tls_features_0001.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
pattern: "^%{POSTFIX_SMTP}$"
2+
# TLS features: security level only (single word)
3+
data: "7EE668039: to=<user@example.com>, relay=mail.example.com[1.2.3.4]:25, delay=3.6, delays=0.08/0.02/0.85/0.14, tls=dane, dsn=2.1.5, status=sent (250 2.0.0 Ok: queued as 153053D)"
4+
results:
5+
postfix_queueid: 7EE668039
6+
postfix_keyvalue_data: "to=<user@example.com>, relay=mail.example.com[1.2.3.4]:25, delay=3.6, delays=0.08/0.02/0.85/0.14, tls=dane, dsn=2.1.5,"

test/tls_features_0002.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
pattern: "^%{POSTFIX_SMTP}$"
2+
# TLS features: security level undecided (with question mark)
3+
data: "7EE668039: to=<user@example.com>, relay=mail.example.com[1.2.3.4]:25, delay=3.6, delays=0.08/0.02/0.85/0.14, tls=may?, dsn=2.1.5, status=sent (250 2.0.0 Ok: queued as 153053D)"
4+
results:
5+
postfix_queueid: 7EE668039
6+
postfix_keyvalue_data: "to=<user@example.com>, relay=mail.example.com[1.2.3.4]:25, delay=3.6, delays=0.08/0.02/0.85/0.14, tls=may?, dsn=2.1.5,"

test/tls_features_0003.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
pattern: "^%{POSTFIX_SMTP}$"
2+
# TLS features: with downgrade level (separated by colon)
3+
data: "7EE668039: to=<user@example.com>, relay=mail.example.com[1.2.3.4]:25, delay=3.6, delays=0.08/0.02/0.85/0.14, tls=may:none, dsn=2.1.5, status=sent (250 2.0.0 Ok: queued as 153053D)"
4+
results:
5+
postfix_queueid: 7EE668039
6+
postfix_keyvalue_data: "to=<user@example.com>, relay=mail.example.com[1.2.3.4]:25, delay=3.6, delays=0.08/0.02/0.85/0.14, tls=may:none, dsn=2.1.5,"

test/tls_features_0004.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
pattern: "^%{POSTFIX_SMTP}$"
2+
# TLS features: requiretls
3+
data: "7EE668039: to=<user@example.com>, relay=mail.example.com[1.2.3.4]:25, delay=3.6, delays=0.08/0.02/0.85/0.14, tls=dane/requiretls, dsn=2.1.5, status=sent (250 2.0.0 Ok: queued as 153053D)"
4+
results:
5+
postfix_queueid: 7EE668039
6+
postfix_keyvalue_data: "to=<user@example.com>, relay=mail.example.com[1.2.3.4]:25, delay=3.6, delays=0.08/0.02/0.85/0.14, tls=dane/requiretls, dsn=2.1.5,"

test/tls_features_0005.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
pattern: "^%{POSTFIX_SMTP}$"
2+
# TLS features: requiretls violation
3+
data: "7EE668039: to=<user@example.com>, relay=mail.example.com[1.2.3.4]:25, delay=3.6, delays=0.08/0.02/0.85/0.14, tls=dane/!requiretls:nocertmatch, dsn=2.1.5, status=sent (250 2.0.0 Ok: queued as 153053D)"
4+
results:
5+
postfix_queueid: 7EE668039
6+
postfix_keyvalue_data: "to=<user@example.com>, relay=mail.example.com[1.2.3.4]:25, delay=3.6, delays=0.08/0.02/0.85/0.14, tls=dane/!requiretls:nocertmatch, dsn=2.1.5,"

test/tls_features_0006.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
pattern: "^%{POSTFIX_SMTP}$"
2+
# TLS features: requiretls policy undecided
3+
data: "7EE668039: to=<user@example.com>, relay=mail.example.com[1.2.3.4]:25, delay=3.6, delays=0.08/0.02/0.85/0.14, tls=dane/requiretls?, dsn=2.1.5, status=sent (250 2.0.0 Ok: queued as 153053D)"
4+
results:
5+
postfix_queueid: 7EE668039
6+
postfix_keyvalue_data: "to=<user@example.com>, relay=mail.example.com[1.2.3.4]:25, delay=3.6, delays=0.08/0.02/0.85/0.14, tls=dane/requiretls?, dsn=2.1.5,"

0 commit comments

Comments
 (0)