SHARE
TWEET

central.conf

UrsBronk Apr 18th, 2019 83 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. input {
  2.         beats
  3.         {
  4.                port => 5044
  5.                ssl  => true
  6.                ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder-remote.domain.com.crt"
  7.                ssl_key => "/etc/pki/tls/private/logstash-forwarder-remote.domain.com.key"
  8.         }
  9. }
  10.  
  11. filter
  12. {
  13.     if ([message] =~ "^(b|rb|rs),")
  14.         {
  15.         csv
  16.         {      
  17.                 separator => ","
  18.                 columns => [
  19.                         "type",
  20.                         "timeLogged",
  21.                         "timeQueued",
  22.                         "orig",
  23.                         "rcpt",
  24.                         "orcpt",
  25.                         "dsnAction",
  26.                         "dsnStatus",
  27.                         "dsnDiag",
  28.                         "dsnMTA",
  29.                         "bounceCat",
  30.                         "srcType",
  31.                         "srcMTA",
  32.                         "dlvType",
  33.                         "dlvSourceIp",
  34.                         "dlvDestinationIp",
  35.                         "dlvEsmtpAvailable",
  36.                         "dlvSize",
  37.                         "vmta",
  38.                         "jobId",
  39.                         "envId",
  40.                         "queue",
  41.                         "vmtaPool",
  42.                         "messageID",
  43.                         "EUID",
  44.                         "from_header",
  45.                         "subject",
  46.                         "header_X-Data-Rating",
  47.                         "header_X-Contact-Score",
  48.                         "dsnReportingMTA"
  49.                 ]
  50.         }
  51.         mutate
  52.         {
  53.                 remove_field => ["message"]
  54.         }
  55.         mutate
  56.         {
  57.              convert => [ "header_X-Data-Rating" , "integer" ]
  58.         }
  59.         mutate
  60.         {
  61.              convert => [ "header_X-Contact-Score" , "integer" ]
  62.         }
  63.         mutate
  64.         {
  65.                 lowercase => ["rcpt"]
  66.         }
  67.         date
  68.         {
  69.                 match => [ "timeQueued", "yyyy-MM-dd HH:mm:ss+0200" ]
  70.                 target => "timeQueued"
  71.         }
  72.         date
  73.         {
  74.                 match => [ "timeLogged", "yyyy-MM-dd HH:mm:ss+0200" ]
  75.                 target => "timeLogged"
  76.         }
  77.         grok
  78.         {
  79.                 patterns_dir => [ "/etc/logstash/patterns" ]
  80.                 match => [ "orig" , "%{EMAILADDRESSORIG}" ]
  81.         }
  82.         grok
  83.         {
  84.                 patterns_dir => [ "/etc/logstash/patterns" ]
  85.                 match => [ "rcpt" , "%{EMAILADDRESSRCPT}" ]
  86.         }
  87.         grok
  88.         {
  89.                 patterns_dir => [ "/etc/logstash/patterns" ]
  90.                 match => [ "dsnMTA" , "%{DSNMTAHOST}" ]
  91.                 tag_on_failure => []
  92.         }
  93.         grok
  94.         {
  95.                 patterns_dir => [ "/etc/logstash/patterns" ]
  96.                 match => [ "messageID" , "%{MESSAGEID}" ]
  97.                 tag_on_failure => []
  98.         }
  99.         mutate
  100.         {
  101.                 convert => [ "dlvSize" , "integer" ]
  102.         }
  103.         mutate
  104.         {
  105.                 gsub => ["from_header", "[<>]", ""]
  106.         }
  107.         grok
  108.         {
  109.                 patterns_dir => ["/etc/logstash/patterns"]
  110.                 match => ["from_header", "%{EMAIL}"]
  111.                 tag_on_failure => []
  112.         }
  113.         mutate
  114.         {
  115.                 remove_field => [ "messageID", "from_header" ]
  116.         }
  117.         if "_grokparsefailure" in [tags]
  118.         {
  119.             drop {}
  120.         }
  121.        
  122.         } else if ([message] =~ "^(t|d|r),") { 
  123.             csv
  124.         {      
  125.                 separator => ","
  126.                 columns => [
  127.                         "type",
  128.                         "timeLogged",
  129.                         "timeQueued",
  130.                         "orig",
  131.                         "rcpt",
  132.                         "orcpt",
  133.                         "dsnAction",
  134.                         "dsnStatus",
  135.                         "dsnDiag",
  136.                         "dsnMTA",
  137.                         "bounceCat",
  138.                         "srcType",
  139.                         "srcMTA",
  140.                         "dlvType",
  141.                         "dlvSourceIp",
  142.                         "dlvDestinationIp",
  143.                         "dlvEsmtpAvailable",
  144.                         "dlvSize",
  145.                         "vmta",
  146.                         "jobId",
  147.                         "envId",
  148.                         "queue",
  149.                         "vmtaPool",
  150.                         "messageID",
  151.                         "EUID",
  152.                         "from_header",
  153.                         "subject",
  154.                         "header_X-Data-Rating",
  155.                         "header_X-Contact-Score",
  156.                         "dsnReportingMTA"
  157.                 ]
  158.         }
  159.         mutate
  160.         {
  161.                 remove_field => ["message"]
  162.         }
  163.         mutate
  164.         {
  165.              convert => [ "header_X-Data-Rating" , "integer" ]
  166.         }
  167.         mutate
  168.         {
  169.              convert => [ "header_X-Contact-Score" , "integer" ]
  170.         }
  171.         mutate
  172.         {
  173.                 lowercase => ["rcpt"]
  174.         }
  175.         date
  176.         {
  177.                 match => [ "timeQueued", "yyyy-MM-dd HH:mm:ss+0200" ]
  178.                 target => "timeQueued"
  179.         }
  180.         date
  181.         {
  182.                 match => [ "timeLogged", "yyyy-MM-dd HH:mm:ss+0200" ]
  183.                 target => "timeLogged"
  184.         }
  185.         grok
  186.         {
  187.                 patterns_dir => [ "/etc/logstash/patterns" ]
  188.                 match => [ "orig" , "%{EMAILADDRESSORIG}" ]
  189.         }
  190.         grok
  191.         {
  192.                 patterns_dir => [ "/etc/logstash/patterns" ]
  193.                 match => [ "rcpt" , "%{EMAILADDRESSRCPT}" ]
  194.         }
  195.         grok
  196.         {
  197.                 patterns_dir => [ "/etc/logstash/patterns" ]
  198.                 match => [ "dsnMTA" , "%{DSNMTAHOST}" ]
  199.                 tag_on_failure => []
  200.         }
  201.         grok
  202.         {
  203.                 patterns_dir => [ "/etc/logstash/patterns" ]
  204.                 match => [ "messageID" , "%{MESSAGEID}" ]
  205.                 tag_on_failure => []
  206.         }
  207.         mutate
  208.         {
  209.                 convert => [ "dlvSize" , "integer" ]
  210.         }
  211.         mutate
  212.         {
  213.                 gsub => ["from_header", "[<>]", ""]
  214.         }
  215.         grok
  216.         {
  217.                 patterns_dir => ["/etc/logstash/patterns"]
  218.                 match => ["from_header", "%{EMAIL}"]
  219.                 tag_on_failure => []
  220.         }
  221.         mutate
  222.         {
  223.                 remove_field => [ "messageID", "from_header" ]
  224.         }
  225.         if "_grokparsefailure" in [tags]
  226.         {
  227.             drop {}
  228.         }
  229.        
  230.         } else if ([message] =~ "^(t|d|b|r),") {
  231.          csv
  232.         {      
  233.                 separator => ","
  234.                 columns => [
  235.                         "type",
  236.                         "timeLogged",
  237.                         "timeQueued",
  238.                         "orig",
  239.                         "rcpt",
  240.                         "orcpt",
  241.                         "dsnAction",
  242.                         "dsnStatus",
  243.                         "dsnDiag",
  244.                         "dsnMTA",
  245.                         "bounceCat",
  246.                         "srcType",
  247.                         "srcMTA",
  248.                         "dlvType",
  249.                         "dlvSourceIp",
  250.                         "dlvDestinationIp",
  251.                         "dlvEsmtpAvailable",
  252.                         "dlvSize",
  253.                         "vmta",
  254.                         "jobId",
  255.                         "envId",
  256.                         "queue",
  257.                         "vmtaPool",
  258.                         "messageID",
  259.                         "EUID",
  260.                         "from_header",
  261.                         "subject",
  262.                         "header_X-Data-Rating",
  263.                         "header_X-Contact-Score",
  264.                         "dsnReportingMTA"
  265.                 ]
  266.         }
  267.         mutate
  268.         {
  269.                 remove_field => ["message"]
  270.         }
  271.         mutate
  272.         {
  273.              convert => [ "header_X-Data-Rating" , "integer" ]
  274.         }
  275.         mutate
  276.         {
  277.              convert => [ "header_X-Contact-Score" , "integer" ]
  278.         }
  279.         mutate
  280.         {
  281.                 lowercase => ["rcpt"]
  282.         }
  283.         date
  284.         {
  285.                 match => [ "timeQueued", "yyyy-MM-dd HH:mm:ss+0200" ]
  286.                 target => "timeQueued"
  287.         }
  288.         date
  289.         {
  290.                 match => [ "timeLogged", "yyyy-MM-dd HH:mm:ss+0200" ]
  291.                 target => "timeLogged"
  292.         }
  293.         grok
  294.         {
  295.                 patterns_dir => [ "/etc/logstash/patterns" ]
  296.                 match => [ "orig" , "%{EMAILADDRESSORIG}" ]
  297.         }
  298.         grok
  299.         {
  300.                 patterns_dir => [ "/etc/logstash/patterns" ]
  301.                 match => [ "rcpt" , "%{EMAILADDRESSRCPT}" ]
  302.         }
  303.         grok
  304.         {
  305.                 patterns_dir => [ "/etc/logstash/patterns" ]
  306.                 match => [ "dsnMTA" , "%{DSNMTAHOST}" ]
  307.                 tag_on_failure => []
  308.         }
  309.         grok
  310.         {
  311.                 patterns_dir => [ "/etc/logstash/patterns" ]
  312.                 match => [ "messageID" , "%{MESSAGEID}" ]
  313.                 tag_on_failure => []
  314.         }
  315.         mutate
  316.         {
  317.                 convert => [ "dlvSize" , "integer" ]
  318.         }
  319.         mutate
  320.         {
  321.                 gsub => ["from_header", "[<>]", ""]
  322.         }
  323.         grok
  324.         {
  325.                 patterns_dir => ["/etc/logstash/patterns"]
  326.                 match => ["from_header", "%{EMAIL}"]
  327.                 tag_on_failure => []
  328.         }
  329.         mutate
  330.         {
  331.                 remove_field => [ "messageID", "from_header" ]
  332.         }
  333.         if "_grokparsefailure" in [tags]
  334.         {
  335.             drop {}
  336.         }
  337.         }
  338. }
  339.  
  340. output
  341. {
  342.         elasticsearch
  343.         {
  344.                 hosts => "172.16.112.xx:9200"
  345.                 index => "pmta-%{+YYYY.MM.dd}"
  346.         }
  347.         stdout { codec => rubydebug }
  348. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top