module Sisimai::Order

Sisimai::Order - Parent class for making optimized order list for calling MTA modules

Constants

OrderE0

There are another patterns in the value of “Subject:” header of a bounce mail generated by the following MTA/ESP modules

OrderE1

Fallback list: The following MTA/ESP modules is not listed OrderE0

Subject

The following order is decided by the first 2 words of Subject: header

Public Class Methods

another() click to toggle source

@abstract Make MTA module list as a spare @return [Array] Ordered module list

# File lib/sisimai/order.rb, line 186
def another; return [OrderE0, OrderE1].flatten; end
default() click to toggle source

@abstract Make default order of MTA modules to be loaded @return [Array] Default order list of MTA modules

# File lib/sisimai/order.rb, line 182
def default; return Sisimai::Lhost.index.map { |e| 'Sisimai::Lhost::' << e }; end
make(argv0 = '') click to toggle source

@abstract Returns an MTA Order decided by the first word of the “Subject”: header @param [String] argv0 Subject header string @return [Array] Order of MTA modules @since v4.25.4

# File lib/sisimai/order.rb, line 164
def make(argv0 = '')
  return [] if argv0.empty?
  argv0 = argv0.downcase.tr('_[] ', ' ').squeeze(' ').sub(/\A[ ]+/, '')
  words = argv0.split(/[ ]/, 3)

  if words[0].include?(':')
    # Undeliverable: ..., notify: ...
    first = argv0.split(':').shift
  else
    # Postmaster notify, returned mail, ...
    first = words.slice(0, 2).join('-')
  end
  first.delete!(':",*')
  return Subject[first] || []
end