SYMBOL INDEX (1300 symbols across 201 files) FILE: app/assets/javascripts/application/vendor/chartist.js function recursiveConvert (line 425) | function recursiveConvert(value) { function recursiveHighLow (line 546) | function recursiveHighLow(data) { function gcd (line 663) | function gcd(p, q) { function f (line 671) | function f(x) { function updateCurrentOptions (line 974) | function updateCurrentOptions(mediaEvent) { function removeMediaQueryListeners (line 995) | function removeMediaQueryListeners() { function addEventHandler (line 1546) | function addEventHandler(event, handler) { function removeEventHandler (line 1558) | function removeEventHandler(event, handler) { function emit (line 1581) | function emit(event, data) { function listToArray (line 1614) | function listToArray(list) { function extend (line 1665) | function extend(properties, superProtoOverride) { function cloneDefinitions (line 1693) | function cloneDefinitions() { function update (line 1739) | function update(data, options, override) { function detach (line 1774) | function detach() { function on (line 1794) | function on(event, handler) { function off (line 1806) | function off(event, handler) { function initialize (line 1811) | function initialize() { function Base (line 1859) | function Base(query, data, defaultOptions, options, responsiveOptions) { function Svg (line 1925) | function Svg(name, attributes, className, parent, insertFirst) { function attr (line 1965) | function attr(attributes, ns) { function elem (line 2001) | function elem(name, attributes, className, insertFirst) { function parent (line 2011) | function parent() { function root (line 2021) | function root() { function querySelector (line 2036) | function querySelector(selector) { function querySelectorAll (line 2048) | function querySelectorAll(selector) { function foreignObject (line 2063) | function foreignObject(content, attributes, className, insertFirst) { function text (line 2092) | function text(t) { function empty (line 2103) | function empty() { function remove (line 2117) | function remove() { function replace (line 2129) | function replace(newElement) { function append (line 2142) | function append(element, insertFirst) { function classes (line 2158) | function classes() { function addClass (line 2169) | function addClass(names) { function removeClass (line 2188) | function removeClass(names) { function removeAllClasses (line 2204) | function removeAllClasses() { function height (line 2216) | function height() { function width (line 2226) | function width() { function animate (line 2271) | function animate(animations, guided, eventEmitter) { function SvgList (line 2458) | function SvgList(nodeList) { function element (line 2525) | function element(command, params, pathElements, pos, relative, data) { function forEachParam (line 2533) | function forEachParam(pathElements, cb) { function SvgPath (line 2549) | function SvgPath(close, options) { function position (line 2563) | function position(pos) { function remove (line 2579) | function remove(count) { function move (line 2594) | function move(x, y, relative, data) { function line (line 2612) | function line(x, y, relative, data) { function curve (line 2634) | function curve(x1, y1, x2, y2, x, y, relative, data) { function arc (line 2661) | function arc(rx, ry, xAr, lAf, sf, x, y, relative, data) { function parse (line 2681) | function parse(path) { function stringify (line 2730) | function stringify() { function scale (line 2752) | function scale(x, y) { function translate (line 2767) | function translate(x, y) { function transform (line 2786) | function transform(transformFnc) { function clone (line 2803) | function clone(close) { function splitByCommand (line 2820) | function splitByCommand(command) { function join (line 2846) | function join(paths, close, options) { function Axis (line 2900) | function Axis(units, chartRect, ticks, options) { function createGridAndLabels (line 2910) | function createGridAndLabels(gridGroup, labelGroup, useForeignObject, ch... function AutoScaleAxis (line 3018) | function AutoScaleAxis(axisUnit, data, chartRect, options) { function projectValue (line 3034) | function projectValue(value) { function FixedScaleAxis (line 3067) | function FixedScaleAxis(axisUnit, data, chartRect, options) { function projectValue (line 3090) | function projectValue(value) { function StepAxis (line 3119) | function StepAxis(axisUnit, data, chartRect, options) { function projectValue (line 3129) | function projectValue(value, index) { function createChart (line 3251) | function createChart(options) { function Line (line 3534) | function Line(query, data, options, responsiveOptions) { function createChart (line 3658) | function createChart(options) { function Bar (line 3964) | function Bar(query, data, options, responsiveOptions) { function determineAnchorPosition (line 4043) | function determineAnchorPosition(center, label, direction) { function createChart (line 4062) | function createChart(options) { function Pie (line 4311) | function Pie(query, data, options, responsiveOptions) { FILE: app/assets/javascripts/application/vendor/jquery.multibox.js function Multibox (line 5) | function Multibox($el, options) { FILE: app/controllers/address_endpoints_controller.rb class AddressEndpointsController (line 3) | class AddressEndpointsController < ApplicationController method index (line 10) | def index method new (line 14) | def new method create (line 18) | def create method update (line 28) | def update method destroy (line 36) | def destroy method safe_params (line 43) | def safe_params FILE: app/controllers/application_controller.rb class ApplicationController (line 5) | class ApplicationController < ActionController::Base method login_required (line 18) | def login_required method admin_required (line 24) | def admin_required method require_organization_owner (line 34) | def require_organization_owner method auth_session_error (line 40) | def auth_session_error(exception) method page_title (line 45) | def page_title method redirect_to_with_return_to (line 50) | def redirect_to_with_return_to(url, *args) method set_timezone (line 54) | def set_timezone method append_info_to_payload (line 58) | def append_info_to_payload(payload) method url_with_return_to (line 64) | def url_with_return_to(url) method redirect_to_with_json (line 72) | def redirect_to_with_json(url, flash_messages = {}) method render_form_errors (line 88) | def render_form_errors(action_name, object) method flash_now (line 95) | def flash_now(type, message, options = {}) method login (line 107) | def login(user) FILE: app/controllers/concerns/within_organization.rb type WithinOrganization (line 3) | module WithinOrganization function organization (line 14) | def organization function add_organization_to_page_title (line 18) | def add_organization_to_page_title FILE: app/controllers/credentials_controller.rb class CredentialsController (line 3) | class CredentialsController < ApplicationController method index (line 10) | def index method new (line 14) | def new method create (line 18) | def create method update (line 27) | def update method destroy (line 35) | def destroy FILE: app/controllers/domains_controller.rb class DomainsController (line 3) | class DomainsController < ApplicationController method index (line 16) | def index method new (line 24) | def new method create (line 28) | def create method destroy (line 48) | def destroy method verify (line 53) | def verify method setup (line 95) | def setup method check (line 101) | def check FILE: app/controllers/help_controller.rb class HelpController (line 3) | class HelpController < ApplicationController method outgoing (line 9) | def outgoing FILE: app/controllers/http_endpoints_controller.rb class HTTPEndpointsController (line 3) | class HTTPEndpointsController < ApplicationController method index (line 10) | def index method new (line 14) | def new method create (line 18) | def create method update (line 28) | def update method destroy (line 36) | def destroy method safe_params (line 43) | def safe_params FILE: app/controllers/ip_addresses_controller.rb class IPAddressesController (line 3) | class IPAddressesController < ApplicationController method new (line 9) | def new method create (line 13) | def create method update (line 22) | def update method destroy (line 30) | def destroy method safe_params (line 37) | def safe_params FILE: app/controllers/ip_pool_rules_controller.rb class IPPoolRulesController (line 3) | class IPPoolRulesController < ApplicationController method index (line 16) | def index method new (line 24) | def new method create (line 28) | def create method update (line 38) | def update method destroy (line 46) | def destroy method safe_params (line 53) | def safe_params FILE: app/controllers/ip_pools_controller.rb class IPPoolsController (line 3) | class IPPoolsController < ApplicationController method index (line 8) | def index method new (line 12) | def new method create (line 16) | def create method update (line 25) | def update method destroy (line 33) | def destroy method safe_params (line 42) | def safe_params FILE: app/controllers/legacy_api/base_controller.rb type LegacyAPI (line 3) | module LegacyAPI class BaseController (line 28) | class BaseController < ActionController::Base method api_params (line 45) | def api_params method start_timer (line 62) | def start_timer method authenticate_as_server (line 73) | def authenticate_as_server method render_success (line 102) | def render_success(data) method render_error (line 114) | def render_error(code, data = {}) method render_parameter_error (line 125) | def render_parameter_error(message) FILE: app/controllers/legacy_api/messages_controller.rb type LegacyAPI (line 3) | module LegacyAPI class MessagesController (line 4) | class MessagesController < BaseController method message (line 17) | def message method deliveries (line 113) | def deliveries FILE: app/controllers/legacy_api/send_controller.rb type LegacyAPI (line 3) | module LegacyAPI class SendController (line 4) | class SendController < BaseController method message (line 39) | def message method raw (line 83) | def raw FILE: app/controllers/messages_controller.rb class MessagesController (line 3) | class MessagesController < ApplicationController method new (line 10) | def new method create (line 26) | def create method outgoing (line 55) | def outgoing method incoming (line 69) | def incoming method held (line 83) | def held method deliveries (line 87) | def deliveries method html_raw (line 91) | def html_raw method spam_checks (line 95) | def spam_checks method attachment (line 99) | def attachment method download (line 108) | def download method retry (line 116) | def retry method cancel_hold (line 134) | def cancel_hold method remove_from_queue (line 139) | def remove_from_queue method suppressions (line 146) | def suppressions method activity (line 150) | def activity method get_messages (line 156) | def get_messages(scope) class TimeUndetermined (line 213) | class TimeUndetermined < Postal::Error; end method get_time_from_string (line 215) | def get_time_from_string(string) FILE: app/controllers/organization_ip_pools_controller.rb class OrganizationIPPoolsController (line 3) | class OrganizationIPPoolsController < ApplicationController method index (line 8) | def index method assignments (line 12) | def assignments FILE: app/controllers/organizations_controller.rb class OrganizationsController (line 3) | class OrganizationsController < ApplicationController method index (line 7) | def index method new (line 18) | def new method edit (line 22) | def edit method create (line 26) | def create method update (line 36) | def update method destroy (line 45) | def destroy method organization (line 61) | def organization FILE: app/controllers/routes_controller.rb class RoutesController (line 3) | class RoutesController < ApplicationController method index (line 10) | def index method new (line 14) | def new method create (line 18) | def create method update (line 27) | def update method destroy (line 35) | def destroy method safe_params (line 42) | def safe_params FILE: app/controllers/servers_controller.rb class ServersController (line 3) | class ServersController < ApplicationController method index (line 10) | def index method show (line 14) | def show method new (line 31) | def new method create (line 35) | def create method update (line 44) | def update method destroy (line 67) | def destroy method queue (line 81) | def queue method suspend (line 86) | def suspend method unsuspend (line 91) | def unsuspend method safe_params (line 98) | def safe_params(*extras) FILE: app/controllers/sessions_controller.rb class SessionsController (line 3) | class SessionsController < ApplicationController method create (line 10) | def create method destroy (line 19) | def destroy method persist (line 25) | def persist method begin_password_reset (line 30) | def begin_password_reset method finish_password_reset (line 45) | def finish_password_reset method ip (line 66) | def ip method create_from_oidc (line 70) | def create_from_oidc method oauth_failure (line 87) | def oauth_failure method require_local_authentication (line 93) | def require_local_authentication FILE: app/controllers/smtp_endpoints_controller.rb class SMTPEndpointsController (line 3) | class SMTPEndpointsController < ApplicationController method index (line 9) | def index method new (line 13) | def new method create (line 17) | def create method update (line 27) | def update method destroy (line 35) | def destroy method safe_params (line 42) | def safe_params FILE: app/controllers/track_domains_controller.rb class TrackDomainsController (line 3) | class TrackDomainsController < ApplicationController method index (line 9) | def index method new (line 13) | def new method create (line 17) | def create method update (line 26) | def update method destroy (line 34) | def destroy method check (line 39) | def check method toggle_ssl (line 47) | def toggle_ssl FILE: app/controllers/user_controller.rb class UserController (line 3) | class UserController < ApplicationController method new (line 7) | def new method edit (line 14) | def edit method create (line 18) | def create method update (line 31) | def update FILE: app/controllers/users_controller.rb class UsersController (line 3) | class UsersController < ApplicationController method index (line 8) | def index method new (line 12) | def new method edit (line 16) | def edit method create (line 19) | def create method update (line 28) | def update method destroy (line 46) | def destroy FILE: app/controllers/webhooks_controller.rb class WebhooksController (line 3) | class WebhooksController < ApplicationController method index (line 9) | def index method new (line 13) | def new method create (line 17) | def create method update (line 26) | def update method destroy (line 34) | def destroy method history (line 39) | def history method history_request (line 44) | def history_request method safe_params (line 50) | def safe_params FILE: app/controllers/well_known_controller.rb class WellKnownController (line 3) | class WellKnownController < ApplicationController method jwks (line 11) | def jwks FILE: app/helpers/application_helper.rb type ApplicationHelper (line 3) | module ApplicationHelper function format_delivery_details (line 5) | def format_delivery_details(server, text) function style_width (line 14) | def style_width(width, options = {}) function domain_options_for_select (line 28) | def domain_options_for_select(server, selected_domain = nil, options =... function endpoint_options_for_select (line 53) | def endpoint_options_for_select(server, selected_value = nil, options ... function postal_version_string (line 104) | def postal_version_string FILE: app/lib/dkim_header.rb class DKIMHeader (line 3) | class DKIMHeader method initialize (line 5) | def initialize(domain, message) method dkim_header (line 20) | def dkim_header method headers (line 26) | def headers method header_names (line 30) | def header_names method normalized_headers (line 34) | def normalized_headers method normalize_header (line 50) | def normalize_header(content) method normalized_body (line 79) | def normalized_body method body_hash (line 103) | def body_hash method dkim_properties (line 107) | def dkim_properties method dkim_header_for_signing (line 118) | def dkim_header_for_signing method signable_header_string (line 122) | def signable_header_string method signature (line 126) | def signature FILE: app/lib/dns_resolver.rb class DNSResolver (line 5) | class DNSResolver class LocalResolversUnavailableError (line 7) | class LocalResolversUnavailableError < StandardError method initialize (line 13) | def initialize(nameservers) method a (line 21) | def a(name, **options) method aaaa (line 31) | def aaaa(name, **options) method txt (line 41) | def txt(name, **options) method cname (line 51) | def cname(name, **options) method mx (line 61) | def mx(name, **options) method effective_ns (line 78) | def effective_ns(name, **options) method ip_to_hostname (line 99) | def ip_to_hostname(ip_address, **options) method dns (line 111) | def dns(raise_timeout_errors: false) method get_resources (line 123) | def get_resources(name, type, **options) method for_domain (line 136) | def for_domain(name) method local (line 147) | def local FILE: app/lib/message_dequeuer.rb type MessageDequeuer (line 3) | module MessageDequeuer function process (line 7) | def process(message, logger:) FILE: app/lib/message_dequeuer/base.rb type MessageDequeuer (line 3) | module MessageDequeuer class Base (line 4) | class Base class StopProcessing (line 6) | class StopProcessing < StandardError method initialize (line 13) | def initialize(queued_message, logger:, state: nil) method process (line 19) | def process method process (line 25) | def process(message, **kwargs) method stop_processing (line 33) | def stop_processing method catch_stops (line 37) | def catch_stops method remove_from_queue (line 44) | def remove_from_queue method create_delivery (line 48) | def create_delivery(type, **kwargs) method log (line 52) | def log(text, **tags) method increment_live_stats (line 56) | def increment_live_stats method hold_if_server_development_mode (line 60) | def hold_if_server_development_mode method log_sender_result (line 70) | def log_sender_result method handle_exception (line 86) | def handle_exception(exception) FILE: app/lib/message_dequeuer/incoming_message_processor.rb type MessageDequeuer (line 3) | module MessageDequeuer class IncomingMessageProcessor (line 4) | class IncomingMessageProcessor < Base method process (line 8) | def process method handle_bounces (line 33) | def handle_bounces method inspect_message (line 60) | def inspect_message method fail_if_spam (line 82) | def fail_if_spam method find_route (line 93) | def find_route method hold_or_reject_spam (line 103) | def hold_or_reject_spam method accept_mail_without_endpoints (line 122) | def accept_mail_without_endpoints method hold_messages (line 131) | def hold_messages method bounce_messages (line 146) | def bounce_messages method send_message_to_sender (line 160) | def send_message_to_sender method send_bounce_on_hard_fail (line 184) | def send_bounce_on_hard_fail method finish_processing (line 200) | def finish_processing FILE: app/lib/message_dequeuer/initial_processor.rb type MessageDequeuer (line 3) | module MessageDequeuer class InitialProcessor (line 4) | class InitialProcessor < Base method process (line 10) | def process method increment_dequeue_metric (line 34) | def increment_dequeue_metric method check_message_exists (line 41) | def check_message_exists method check_message_is_ready (line 49) | def check_message_is_ready method find_other_messages_for_batch (line 57) | def find_other_messages_for_batch method process_message (line 67) | def process_message(queued_message) FILE: app/lib/message_dequeuer/outgoing_message_processor.rb type MessageDequeuer (line 3) | module MessageDequeuer class OutgoingMessageProcessor (line 4) | class OutgoingMessageProcessor < Base method process (line 6) | def process method check_domain (line 32) | def check_domain method check_rcpt_to (line 41) | def check_rcpt_to method add_tag (line 50) | def add_tag method hold_if_credential_is_set_to_hold (line 58) | def hold_if_credential_is_set_to_hold method hold_if_recipient_on_suppression_list (line 69) | def hold_if_recipient_on_suppression_list method parse_content (line 79) | def parse_content method inspect_message (line 86) | def inspect_message method fail_if_spam (line 101) | def fail_if_spam method add_outgoing_headers (line 112) | def add_outgoing_headers method check_send_limits (line 118) | def check_send_limits method send_message_to_sender (line 134) | def send_message_to_sender method add_recipient_to_suppression_list_on_too_many_hard_fails (line 148) | def add_recipient_to_suppression_list_on_too_many_hard_fails method remove_recipient_from_suppression_list_on_success (line 168) | def remove_recipient_from_suppression_list_on_success method finish_processing (line 178) | def finish_processing FILE: app/lib/message_dequeuer/single_message_processor.rb type MessageDequeuer (line 3) | module MessageDequeuer class SingleMessageProcessor (line 4) | class SingleMessageProcessor < Base method process (line 6) | def process method check_message_exists (line 33) | def check_message_exists method check_server_suspension (line 41) | def check_server_suspension method check_delivery_attempts (line 50) | def check_delivery_attempts method check_raw_message_exists (line 73) | def check_raw_message_exists FILE: app/lib/message_dequeuer/state.rb type MessageDequeuer (line 3) | module MessageDequeuer class State (line 4) | class State method sender_for (line 8) | def sender_for(klass, *args, **kwargs) method finished (line 17) | def finished FILE: app/lib/query_string.rb class QueryString (line 3) | class QueryString method initialize (line 5) | def initialize(string) method [] (line 9) | def [](value) method hash (line 15) | def hash FILE: app/lib/received_header.rb class ReceivedHeader (line 3) | class ReceivedHeader method generate (line 12) | def generate(server, helo, ip_address, method) FILE: app/lib/reply_separator.rb class ReplySeparator (line 3) | class ReplySeparator method separate (line 19) | def self.separate(text) FILE: app/lib/smtp_client/endpoint.rb type SMTPClient (line 3) | module SMTPClient class Endpoint (line 4) | class Endpoint class SMTPSessionNotStartedError (line 6) | class SMTPSessionNotStartedError < StandardError method initialize (line 15) | def initialize(server, ip_address) method description (line 23) | def description method to_s (line 30) | def to_s method ipv6? (line 37) | def ipv6? method ipv4? (line 44) | def ipv4? method start_smtp_session (line 54) | def start_smtp_session(source_ip_address: nil, allow_ssl: true) method send_message (line 100) | def send_message(raw_message, mail_from, rcpt_to, retry_on_connectio... method reset_smtp_session (line 119) | def reset_smtp_session method finish_smtp_session (line 128) | def finish_smtp_session method default_helo_hostname (line 142) | def default_helo_hostname method ssl_context_with_verify (line 148) | def ssl_context_with_verify method ssl_context_without_verify (line 158) | def ssl_context_without_verify FILE: app/lib/smtp_client/server.rb type SMTPClient (line 3) | module SMTPClient class Server (line 4) | class Server method initialize (line 10) | def initialize(hostname, port: 25, ssl_mode: SSLModes::AUTO) method endpoints (line 20) | def endpoints FILE: app/lib/smtp_client/ssl_modes.rb type SMTPClient (line 3) | module SMTPClient type SSLModes (line 4) | module SSLModes FILE: app/lib/smtp_server/client.rb type SMTPServer (line 3) | module SMTPServer class Client (line 4) | class Client method initialize (line 20) | def initialize(ip_address) method check_ip_address (line 36) | def check_ip_address method transaction_reset (line 44) | def transaction_reset method trace_id (line 51) | def trace_id method handle (line 55) | def handle(data) method finished? (line 80) | def finished? method start_tls? (line 84) | def start_tls? method handle_command (line 90) | def handle_command(data) method logger (line 110) | def logger method proxy (line 118) | def proxy(data) method quit (line 134) | def quit method starttls (line 139) | def starttls method ehlo (line 151) | def ehlo(data) method helo (line 163) | def helo(data) method rset (line 171) | def rset method noop (line 178) | def noop method auth_plain (line 182) | def auth_plain(data) method auth_login (line 209) | def auth_login(data) method authenticate (line 233) | def authenticate(password) method auth_cram_md5 (line 244) | def auth_cram_md5(data) method mail_from (line 286) | def mail_from(data) method rcpt_to (line 305) | def rcpt_to(data) method data (line 409) | def data(_data) method finished (line 464) | def finished method in_state (line 546) | def in_state(*states) method sanitize_input_for_log (line 550) | def sanitize_input_for_log(data) method increment_error_count (line 563) | def increment_error_count(error) method increment_command_count (line 567) | def increment_command_count(command) method increment_message_count (line 571) | def increment_message_count(type) method register_prometheus_metrics (line 580) | def register_prometheus_metrics FILE: app/lib/smtp_server/server.rb type SMTPServer (line 6) | module SMTPServer class Server (line 7) | class Server method tls_private_key (line 13) | def tls_private_key method tls_certificates (line 17) | def tls_certificates method initialize (line 29) | def initialize(options = {}) method run (line 36) | def run method prepare_environment (line 45) | def prepare_environment method ssl_context (line 60) | def ssl_context method listen (line 72) | def listen method unlisten (line 91) | def unlisten method run_event_loop (line 97) | def run_event_loop method logger (line 298) | def logger method register_prometheus_metrics (line 302) | def register_prometheus_metrics FILE: app/lib/worker/jobs/base_job.rb type Worker (line 3) | module Worker type Jobs (line 4) | module Jobs class BaseJob (line 5) | class BaseJob method initialize (line 7) | def initialize(logger:) method call (line 11) | def call method work_completed? (line 15) | def work_completed? method work_completed! (line 21) | def work_completed! FILE: app/lib/worker/jobs/process_queued_messages_job.rb type Worker (line 3) | module Worker type Jobs (line 4) | module Jobs class ProcessQueuedMessagesJob (line 5) | class ProcessQueuedMessagesJob < BaseJob method call (line 7) | def call method find_ip_addresses (line 24) | def find_ip_addresses method local_ip? (line 38) | def local_ip?(ip) method lock_message_for_processing (line 45) | def lock_message_for_processing method obtain_locked_messages (line 57) | def obtain_locked_messages method process_messages (line 64) | def process_messages FILE: app/lib/worker/jobs/process_webhook_requests_job.rb type Worker (line 3) | module Worker type Jobs (line 4) | module Jobs class ProcessWebhookRequestsJob (line 5) | class ProcessWebhookRequestsJob < BaseJob method call (line 7) | def call method lock_request_for_processing (line 21) | def lock_request_for_processing method obtain_locked_requests (line 32) | def obtain_locked_requests method process_requests (line 39) | def process_requests FILE: app/lib/worker/process.rb type Worker (line 3) | module Worker class Process (line 20) | class Process method initialize (line 48) | def initialize(thread_count: Postal::Config.worker.threads, method run (line 60) | def run method setup_traps (line 75) | def setup_traps method receive_signal (line 84) | def receive_signal(signal) method shutdown_after_wait? (line 96) | def shutdown_after_wait?(wait_time) method ensure_connection_pool_size_is_suitable (line 104) | def ensure_connection_pool_size_is_suitable method wait_for_threads (line 120) | def wait_for_threads method start_work_threads (line 127) | def start_work_threads method start_work_thread (line 137) | def start_work_thread(index) method work (line 157) | def work(thread) method start_tasks_thread (line 190) | def start_tasks_thread method run_tasks (line 216) | def run_tasks method run_task (line 242) | def run_task(task) method logger (line 276) | def logger method capture_errors (line 284) | def capture_errors method setup_prometheus (line 295) | def setup_prometheus FILE: app/mailers/app_mailer.rb class AppMailer (line 3) | class AppMailer < ApplicationMailer method verify_domain (line 5) | def verify_domain(domain, email_address, user) method password_reset (line 12) | def password_reset(user, return_to = nil) method server_send_limit_approaching (line 18) | def server_send_limit_approaching(server) method server_send_limit_exceeded (line 23) | def server_send_limit_exceeded(server) method server_suspended (line 28) | def server_suspended(server) method test_message (line 33) | def test_message(recipient) FILE: app/mailers/application_mailer.rb class ApplicationMailer (line 3) | class ApplicationMailer < ActionMailer::Base FILE: app/models/additional_route_endpoint.rb class AdditionalRouteEndpoint (line 15) | class AdditionalRouteEndpoint < ApplicationRecord method find_by_endpoint (line 24) | def self.find_by_endpoint(endpoint) method _endpoint (line 35) | def _endpoint method _endpoint= (line 39) | def _endpoint=(value) method validate_endpoint_belongs_to_server (line 54) | def validate_endpoint_belongs_to_server method validate_uniqueness (line 60) | def validate_uniqueness method validate_wildcard (line 66) | def validate_wildcard FILE: app/models/address_endpoint.rb class AddressEndpoint (line 16) | class AddressEndpoint < ApplicationRecord method mark_as_used (line 28) | def mark_as_used method update_routes (line 32) | def update_routes method description (line 36) | def description method domain (line 40) | def domain FILE: app/models/application_record.rb class ApplicationRecord (line 3) | class ApplicationRecord < ActiveRecord::Base FILE: app/models/bounce_message.rb class BounceMessage (line 3) | class BounceMessage method initialize (line 5) | def initialize(server, message) method raw_message (line 10) | def raw_message method queue (line 21) | def queue method postmaster_address (line 34) | def postmaster_address method body (line 40) | def body FILE: app/models/concerns/has_authentication.rb type HasAuthentication (line 3) | module HasAuthentication function authenticate (line 20) | def authenticate(email_address, password) function authenticate_with_previous_password_first (line 29) | def authenticate_with_previous_password_first(unencrypted_password) function begin_password_reset (line 37) | def begin_password_reset(return_to = nil) function clear_password_reset_token_on_password_change (line 50) | def clear_password_reset_token_on_password_change function validate_password_presence (line 57) | def validate_password_presence FILE: app/models/concerns/has_dns_checks.rb type HasDNSChecks (line 5) | module HasDNSChecks function dns_ok? (line 7) | def dns_ok? function dns_checked? (line 11) | def dns_checked? function check_dns (line 15) | def check_dns(source = :manual) function check_spf_record (line 45) | def check_spf_record function check_spf_record! (line 65) | def check_spf_record! function check_dkim_record (line 74) | def check_dkim_record function check_dkim_record! (line 96) | def check_dkim_record! function check_mx_records (line 105) | def check_mx_records function check_mx_records! (line 125) | def check_mx_records! function check_return_path_record (line 134) | def check_return_path_record function check_return_path_record! (line 148) | def check_return_path_record! FILE: app/models/concerns/has_locking.rb type HasLocking (line 13) | module HasLocking function ready? (line 22) | def ready? function unlock (line 26) | def unlock function locked? (line 32) | def locked? function retry_later (line 36) | def retry_later(time = nil) function calculate_retry_time (line 43) | def calculate_retry_time(attempts, initial_period) FILE: app/models/concerns/has_message.rb type HasMessage (line 3) | module HasMessage function included (line 5) | def self.included(base) function message (line 9) | def message function message= (line 17) | def message=(message) type ClassMethods (line 22) | module ClassMethods function include_message (line 24) | def include_message FILE: app/models/concerns/has_soft_destroy.rb type HasSoftDestroy (line 3) | module HasSoftDestroy function included (line 5) | def self.included(base) function soft_destroy (line 13) | def soft_destroy FILE: app/models/concerns/has_uuid.rb type HasUUID (line 3) | module HasUUID function included (line 5) | def self.included(base) function to_param (line 11) | def to_param FILE: app/models/credential.rb class Credential (line 20) | class Credential < ApplicationRecord method generate_key (line 38) | def generate_key method to_param (line 45) | def to_param method use (line 49) | def use method usage_type (line 53) | def usage_type method to_smtp_plain (line 67) | def to_smtp_plain method ipaddr (line 71) | def ipaddr method validate_key_cannot_be_changed (line 81) | def validate_key_cannot_be_changed method validate_key_for_smtp_ip (line 89) | def validate_key_for_smtp_ip FILE: app/models/domain.rb class Domain (line 41) | class Domain < ApplicationRecord method verified? (line 66) | def verified? method mark_as_verified (line 70) | def mark_as_verified method parent_domains (line 77) | def parent_domains method generate_dkim_key (line 84) | def generate_dkim_key method dkim_key (line 88) | def dkim_key method to_param (line 94) | def to_param method verification_email_addresses (line 98) | def verification_email_addresses method spf_record (line 106) | def spf_record method dkim_record (line 110) | def dkim_record method dkim_identifier (line 117) | def dkim_identifier method dkim_record_name (line 123) | def dkim_record_name method return_path_domain (line 130) | def return_path_domain method resolver (line 138) | def resolver method dns_verification_string (line 144) | def dns_verification_string method verify_with_dns (line 148) | def verify_with_dns method update_verification_token_on_method_change (line 163) | def update_verification_token_on_method_change FILE: app/models/http_endpoint.rb class HTTPEndpoint (line 24) | class HTTPEndpoint < ApplicationRecord method description (line 47) | def description method mark_as_used (line 51) | def mark_as_used method update_routes (line 55) | def update_routes FILE: app/models/incoming_message_prototype.rb class IncomingMessagePrototype (line 3) | class IncomingMessagePrototype method initialize (line 12) | def initialize(server, ip, source_type, attributes) method from_address (line 22) | def from_address method route (line 26) | def route method attachments (line 35) | def attachments method create_messages (line 46) | def create_messages method valid? (line 59) | def valid? method errors (line 64) | def errors method validate (line 68) | def validate method raw_message (line 84) | def raw_message FILE: app/models/ip_address.rb class IPAddress (line 17) | class IPAddress < ApplicationRecord method set_default_priority (line 32) | def set_default_priority method select_by_priority (line 40) | def select_by_priority FILE: app/models/ip_pool.rb class IPPool (line 19) | class IPPool < ApplicationRecord method default (line 31) | def self.default FILE: app/models/ip_pool_rule.rb class IPPoolRule (line 18) | class IPPoolRule < ApplicationRecord method from (line 28) | def from method to (line 32) | def to method apply_to_message? (line 36) | def apply_to_message?(message) method validate_from_and_to_addresses (line 58) | def validate_from_and_to_addresses method validate_ip_pool_belongs_to_organization (line 64) | def validate_ip_pool_belongs_to_organization method address_matches? (line 73) | def address_matches?(condition, address) FILE: app/models/organization.rb class Organization (line 26) | class Organization < ApplicationRecord method status (line 58) | def status method to_param (line 66) | def to_param method suspended? (line 70) | def suspended? method user_assignment (line 74) | def user_assignment(user) method make_owner (line 79) | def make_owner(new_owner) method notification_addresses (line 85) | def notification_addresses method find_unique_permalink (line 89) | def self.find_unique_permalink(name) method [] (line 100) | def self.[](id) FILE: app/models/organization_ip_pool.rb class OrganizationIPPool (line 14) | class OrganizationIPPool < ApplicationRecord FILE: app/models/organization_user.rb class OrganizationUser (line 16) | class OrganizationUser < ApplicationRecord FILE: app/models/outgoing_message_prototype.rb class OutgoingMessagePrototype (line 5) | class OutgoingMessagePrototype method initialize (line 22) | def initialize(server, ip, source_type, attributes) method from_address (line 36) | def from_address method sender_address (line 40) | def sender_address method domain (line 44) | def domain method find_domain (line 51) | def find_domain method to_addresses (line 59) | def to_addresses method cc_addresses (line 63) | def cc_addresses method bcc_addresses (line 67) | def bcc_addresses method all_addresses (line 71) | def all_addresses method create_messages (line 75) | def create_messages method valid? (line 87) | def valid? method errors (line 92) | def errors method attachments (line 97) | def attachments method validate (line 108) | def validate method raw_message (line 151) | def raw_message method create_message (line 186) | def create_message(address) FILE: app/models/queued_message.rb class QueuedMessage (line 29) | class QueuedMessage < ApplicationRecord method retry_now (line 42) | def retry_now method send_bounce (line 46) | def send_bounce method allocate_ip_address (line 52) | def allocate_ip_address method batchable_messages (line 62) | def batchable_messages(limit = 10) FILE: app/models/route.rb class Route (line 25) | class Route < ApplicationRecord method return_path? (line 53) | def return_path? method description (line 57) | def description method _endpoint (line 65) | def _endpoint method _endpoint= (line 73) | def _endpoint=(value) method forward_address (line 91) | def forward_address method wildcard? (line 95) | def wildcard? method additional_route_endpoints_array (line 99) | def additional_route_endpoints_array method additional_route_endpoints_array= (line 103) | def additional_route_endpoints_array=(array) method save_additional_route_endpoints (line 107) | def save_additional_route_endpoints method create_messages (line 136) | def create_messages(&block) method build_message (line 164) | def build_message method validate_route_is_routed (line 175) | def validate_route_is_routed method validate_domain_belongs_to_server (line 181) | def validate_domain_belongs_to_server method validate_endpoint_belongs_to_server (line 191) | def validate_endpoint_belongs_to_server method validate_name_uniqueness (line 197) | def validate_name_uniqueness method validate_return_path_route_endpoints (line 209) | def validate_return_path_route_endpoints method validate_no_additional_routes_on_non_endpoint_route (line 216) | def validate_no_additional_routes_on_non_endpoint_route method find_by_name_and_domain (line 224) | def find_by_name_and_domain(name, domain) FILE: app/models/scheduled_task.rb class ScheduledTask (line 15) | class ScheduledTask < ApplicationRecord FILE: app/models/server.rb class Server (line 45) | class Server < ApplicationRecord method status (line 98) | def status method full_permalink (line 106) | def full_permalink method suspended? (line 110) | def suspended? method actual_suspension_reason (line 114) | def actual_suspension_reason method to_param (line 124) | def to_param method message_db (line 128) | def message_db method message_rate (line 134) | def message_rate method held_messages (line 138) | def held_messages method throughput_stats (line 142) | def throughput_stats method bounce_rate (line 155) | def bounce_rate method domain_stats (line 168) | def domain_stats method webhook_hash (line 181) | def webhook_hash method send_volume (line 190) | def send_volume method send_limit_approaching? (line 194) | def send_limit_approaching? method send_limit_exceeded? (line 200) | def send_limit_exceeded? method send_limit_warning (line 206) | def send_limit_warning(type) method queue_size (line 215) | def queue_size method authenticated_domain_for_address (line 223) | def authenticated_domain_for_address(address) method find_authenticated_domain_from_headers (line 251) | def find_authenticated_domain_from_headers(headers) method suspend (line 269) | def suspend(reason) method unsuspend (line 279) | def unsuspend method ip_pool_for_message (line 285) | def ip_pool_for_message(message) method validate_ip_pool_belongs_to_organization (line 302) | def validate_ip_pool_belongs_to_organization method triggered_send_limit (line 310) | def triggered_send_limit(type) method send_send_limit_notifications (line 315) | def send_send_limit_notifications method [] (line 328) | def [](id, extra = nil) FILE: app/models/smtp_endpoint.rb class SMTPEndpoint (line 21) | class SMTPEndpoint < ApplicationRecord method description (line 38) | def description method mark_as_used (line 42) | def mark_as_used method update_routes (line 46) | def update_routes method to_smtp_client_server (line 50) | def to_smtp_client_server FILE: app/models/statistic.rb class Statistic (line 13) | class Statistic < ApplicationRecord method global (line 15) | def self.global FILE: app/models/track_domain.rb class TrackDomain (line 25) | class TrackDomain < ApplicationRecord method full_name (line 44) | def full_name method excluded_click_domains_array (line 48) | def excluded_click_domains_array method dns_ok? (line 52) | def dns_ok? method check_dns (line 56) | def check_dns method use_ssl? (line 73) | def use_ssl? method validate_domain_belongs_to_server (line 77) | def validate_domain_belongs_to_server FILE: app/models/user.rb class User (line 30) | class User < ApplicationRecord method organizations_scope (line 44) | def organizations_scope method name (line 52) | def name method password? (line 56) | def password? method oidc? (line 60) | def oidc? method to_param (line 64) | def to_param method email_tag (line 68) | def email_tag method [] (line 79) | def [](email) method find_from_oidc (line 89) | def find_from_oidc(auth, logger: nil) FILE: app/models/user_invite.rb class UserInvite (line 19) | class UserInvite < ApplicationRecord method md5_for_gravatar (line 32) | def md5_for_gravatar method avatar_url (line 36) | def avatar_url method name (line 40) | def name method accept (line 44) | def accept(user) method reject (line 54) | def reject FILE: app/models/webhook.rb class Webhook (line 24) | class Webhook < ApplicationRecord method events (line 40) | def events method events= (line 44) | def events=(value) method save_events (line 50) | def save_events method destroy_events_when_all_events_enabled (line 60) | def destroy_events_when_all_events_enabled FILE: app/models/webhook_event.rb class WebhookEvent (line 17) | class WebhookEvent < ApplicationRecord FILE: app/models/webhook_request.rb class WebhookRequest (line 26) | class WebhookRequest < ApplicationRecord method trigger (line 41) | def trigger(server, event, payload = {}) FILE: app/models/worker_role.rb class WorkerRole (line 16) | class WorkerRole < ApplicationRecord method acquire (line 24) | def acquire(role) method release (line 47) | def release(role) FILE: app/scheduled_tasks/action_deletions_scheduled_task.rb class ActionDeletionsScheduledTask (line 3) | class ActionDeletionsScheduledTask < ApplicationScheduledTask method call (line 5) | def call FILE: app/scheduled_tasks/application_scheduled_task.rb class ApplicationScheduledTask (line 3) | class ApplicationScheduledTask method initialize (line 5) | def initialize(logger:) method call (line 9) | def call method next_run_after (line 17) | def next_run_after method quarter_past_each_hour (line 23) | def quarter_past_each_hour method quarter_to_each_hour (line 30) | def quarter_to_each_hour method three_am (line 37) | def three_am FILE: app/scheduled_tasks/check_all_dns_scheduled_task.rb class CheckAllDNSScheduledTask (line 3) | class CheckAllDNSScheduledTask < ApplicationScheduledTask method call (line 5) | def call FILE: app/scheduled_tasks/cleanup_authie_sessions_scheduled_task.rb class CleanupAuthieSessionsScheduledTask (line 5) | class CleanupAuthieSessionsScheduledTask < ApplicationScheduledTask method call (line 7) | def call FILE: app/scheduled_tasks/expire_held_messages_scheduled_task.rb class ExpireHeldMessagesScheduledTask (line 3) | class ExpireHeldMessagesScheduledTask < ApplicationScheduledTask method call (line 5) | def call FILE: app/scheduled_tasks/process_message_retention_scheduled_task.rb class ProcessMessageRetentionScheduledTask (line 3) | class ProcessMessageRetentionScheduledTask < ApplicationScheduledTask method call (line 5) | def call method next_run_after (line 25) | def self.next_run_after FILE: app/scheduled_tasks/prune_suppression_lists_scheduled_task.rb class PruneSuppressionListsScheduledTask (line 3) | class PruneSuppressionListsScheduledTask < ApplicationScheduledTask method call (line 5) | def call method next_run_after (line 12) | def self.next_run_after FILE: app/scheduled_tasks/prune_webhook_requests_scheduled_task.rb class PruneWebhookRequestsScheduledTask (line 3) | class PruneWebhookRequestsScheduledTask < ApplicationScheduledTask method call (line 5) | def call method next_run_after (line 12) | def self.next_run_after FILE: app/scheduled_tasks/send_notifications_scheduled_task.rb class SendNotificationsScheduledTask (line 3) | class SendNotificationsScheduledTask < ApplicationScheduledTask method call (line 5) | def call method next_run_after (line 9) | def self.next_run_after FILE: app/scheduled_tasks/tidy_queued_messages_task.rb class TidyQueuedMessagesTask (line 3) | class TidyQueuedMessagesTask < ApplicationScheduledTask method call (line 5) | def call method next_run_after (line 14) | def self.next_run_after FILE: app/senders/base_sender.rb class BaseSender (line 3) | class BaseSender method start (line 5) | def start method send_message (line 8) | def send_message(message) method finish (line 11) | def finish FILE: app/senders/http_sender.rb class HTTPSender (line 3) | class HTTPSender < BaseSender method initialize (line 5) | def initialize(endpoint, options = {}) method send_message (line 12) | def send_message(message) method log (line 62) | def log(text) method parameters (line 66) | def parameters(message, options = {}) FILE: app/senders/send_result.rb class SendResult (line 3) | class SendResult method initialize (line 15) | def initialize FILE: app/senders/smtp_sender.rb class SMTPSender (line 3) | class SMTPSender < BaseSender method initialize (line 10) | def initialize(domain, source_ip_address = nil, servers: nil, log_id: ... method start (line 27) | def start method send_message (line 40) | def send_message(message) method finish (line 71) | def finish method send_message_to_smtp_client (line 87) | def send_message_to_smtp_client(raw_message, mail_from, rcpt_to, retry... method determine_mail_from_for_message (line 139) | def determine_mail_from_for_message(message) method determine_rcpt_to_for_message (line 155) | def determine_rcpt_to_for_message(message) method resolve_mx_records_for_domain (line 164) | def resolve_mx_records_for_domain method connect_to_endpoint (line 179) | def connect_to_endpoint(endpoint, allow_ssl: true) method create_result (line 220) | def create_result(type, start_time = nil) method logger (line 232) | def logger method smtp_relays (line 241) | def smtp_relays FILE: app/services/webhook_delivery_service.rb class WebhookDeliveryService (line 3) | class WebhookDeliveryService method initialize (line 7) | def initialize(webhook_request:) method call (line 11) | def call method success? (line 21) | def success? method generate_payload (line 27) | def generate_payload method send_request (line 36) | def send_request method record_attempt (line 45) | def record_attempt method appreciate_http_result (line 68) | def appreciate_http_result method update_webhook_request (line 80) | def update_webhook_request method logger (line 93) | def logger FILE: app/util/has_prometheus_metrics.rb type HasPrometheusMetrics (line 3) | module HasPrometheusMetrics function register_prometheus_counter (line 5) | def register_prometheus_counter(name, **kwargs) function register_prometheus_histogram (line 10) | def register_prometheus_histogram(name, **kwargs) function increment_prometheus_counter (line 15) | def increment_prometheus_counter(name, labels: {}) function observe_prometheus_histogram (line 22) | def observe_prometheus_histogram(name, time, labels: {}) function registry (line 31) | def registry FILE: app/util/health_server.rb class HealthServer (line 7) | class HealthServer method initialize (line 9) | def initialize(name: "unnamed-process") method call (line 13) | def call(env) method root (line 28) | def root method ok (line 32) | def ok method not_found (line 36) | def not_found method metrics (line 40) | def metrics method hostname (line 46) | def hostname method run (line 54) | def run(default_port:, default_bind_address:, **options) method start (line 68) | def start(**options) class LoggerProxy (line 76) | class LoggerProxy method add (line 88) | def add(severity, message) FILE: app/util/user_creator.rb type UserCreator (line 5) | module UserCreator function start (line 9) | def start(&block) FILE: config/application.rb type Postal (line 19) | module Postal class Application (line 20) | class Application < Rails::Application FILE: config/initializers/logging.rb function add_exception_to_payload (line 4) | def add_exception_to_payload(payload, event) FILE: config/initializers/mail_extensions.rb type Mail (line 4) | module Mail type Encodings (line 6) | module Encodings function q_value_decode (line 9) | def self.q_value_decode(str) function b_value_decode (line 14) | def self.b_value_decode(str) class Message (line 21) | class Message method plain_body (line 24) | def plain_body method html_body (line 33) | def html_body method parse_message (line 44) | def parse_message method find_attachment (line 51) | def find_attachment method decode_body_as_text (line 91) | def decode_body_as_text class AttachmentsList (line 112) | class AttachmentsList < Array method initialize (line 115) | def initialize(parts_list) class Array (line 129) | class Array method decoded (line 131) | def decoded class NilClass (line 139) | class NilClass method decoded (line 141) | def decoded FILE: config/initializers/record_key_for_dom.rb type ActionView (line 3) | module ActionView type RecordIdentifier (line 4) | module RecordIdentifier function dom_id (line 6) | def dom_id(record, prefix = nil) FILE: config/initializers/smtp_extensions.rb type Net (line 3) | module Net class SMTP (line 4) | class SMTP method secure_socket? (line 8) | def secure_socket? method rset (line 20) | def rset method rset_errors (line 25) | def rset_errors method tcp_socket (line 31) | def tcp_socket(address, port) class Response (line 35) | class Response method message (line 37) | def message FILE: db/migrate/20161003195209_create_authie_sessions.authie.rb class CreateAuthieSessions (line 4) | class CreateAuthieSessions < ActiveRecord::Migration method change (line 6) | def change FILE: db/migrate/20161003195210_add_indexes_to_authie_sessions.authie.rb class AddIndexesToAuthieSessions (line 4) | class AddIndexesToAuthieSessions < ActiveRecord::Migration method change (line 6) | def change FILE: db/migrate/20161003195211_add_parent_id_to_authie_sessions.authie.rb class AddParentIdToAuthieSessions (line 4) | class AddParentIdToAuthieSessions < ActiveRecord::Migration method change (line 6) | def change FILE: db/migrate/20161003195212_add_two_factor_auth_fields_to_authie.authie.rb class AddTwoFactorAuthFieldsToAuthie (line 4) | class AddTwoFactorAuthFieldsToAuthie < ActiveRecord::Migration method change (line 6) | def change FILE: db/migrate/20170418200606_initial_schema.rb class InitialSchema (line 3) | class InitialSchema < ActiveRecord::Migration method up (line 5) | def up FILE: db/migrate/20170421195414_add_token_hashes_to_authie_sessions.authie.rb class AddTokenHashesToAuthieSessions (line 4) | class AddTokenHashesToAuthieSessions < ActiveRecord::Migration method change (line 6) | def change FILE: db/migrate/20170421195415_add_index_to_token_hashes_on_authie_sessions.authie.rb class AddIndexToTokenHashesOnAuthieSessions (line 4) | class AddIndexToTokenHashesOnAuthieSessions < ActiveRecord::Migration method change (line 6) | def change FILE: db/migrate/20170428153353_remove_type_from_ip_pools.rb class RemoveTypeFromIPPools (line 3) | class RemoveTypeFromIPPools < ActiveRecord::Migration[5.0] method change (line 5) | def change FILE: db/migrate/20180216114344_add_host_to_authie_sessions.authie.rb class AddHostToAuthieSessions (line 4) | class AddHostToAuthieSessions < ActiveRecord::Migration[4.2] method change (line 6) | def change FILE: db/migrate/20200717083943_add_uuid_to_credentials.rb class AddUUIDToCredentials (line 3) | class AddUUIDToCredentials < ActiveRecord::Migration[5.2] method change (line 5) | def change FILE: db/migrate/20210727210551_add_priority_to_ip_addresses.rb class AddPriorityToIPAddresses (line 3) | class AddPriorityToIPAddresses < ActiveRecord::Migration[5.2] method change (line 5) | def change FILE: db/migrate/20240206173036_add_privacy_mode_to_servers.rb class AddPrivacyModeToServers (line 3) | class AddPrivacyModeToServers < ActiveRecord::Migration[6.1] method change (line 5) | def change FILE: db/migrate/20240213165450_create_worker_roles.rb class CreateWorkerRoles (line 3) | class CreateWorkerRoles < ActiveRecord::Migration[6.1] method change (line 5) | def change FILE: db/migrate/20240213171830_create_scheduled_tasks.rb class CreateScheduledTasks (line 3) | class CreateScheduledTasks < ActiveRecord::Migration[6.1] method change (line 5) | def change FILE: db/migrate/20240214132253_add_lock_fields_to_webhook_requests.rb class AddLockFieldsToWebhookRequests (line 3) | class AddLockFieldsToWebhookRequests < ActiveRecord::Migration[6.1] method change (line 5) | def change FILE: db/migrate/20240223141500_add_two_factor_required_to_sessions.authie.rb class AddTwoFactorRequiredToSessions (line 4) | class AddTwoFactorRequiredToSessions < ActiveRecord::Migration[6.1] method change (line 6) | def change FILE: db/migrate/20240223141501_add_countries_to_authie_sessions.authie.rb class AddCountriesToAuthieSessions (line 4) | class AddCountriesToAuthieSessions < ActiveRecord::Migration[6.1] method change (line 6) | def change FILE: db/migrate/20240311205229_add_oidc_fields_to_user.rb class AddOIDCFieldsToUser (line 3) | class AddOIDCFieldsToUser < ActiveRecord::Migration[7.0] method change (line 5) | def change FILE: lib/migration_waiter.rb class MigrationWaiter (line 8) | class MigrationWaiter method wait (line 15) | def wait method wait_if_appropriate (line 36) | def wait_if_appropriate method console? (line 46) | def console? method rake_task? (line 50) | def rake_task? method rails_command? (line 54) | def rails_command? FILE: lib/postal.rb type Postal (line 3) | module Postal FILE: lib/postal/config.rb type Postal (line 20) | module Postal function config_file_path (line 29) | def config_file_path function initialize_config (line 33) | def initialize_config function host_with_protocol (line 78) | def host_with_protocol function logger (line 82) | def logger function process_name (line 90) | def process_name function locker_name (line 98) | def locker_name function locker_name_with_suffix (line 105) | def locker_name_with_suffix(suffix) function signer (line 109) | def signer function rp_dkim_dns_record (line 116) | def rp_dkim_dns_record function ip_pools? (line 121) | def ip_pools? function graylog_logging_destination (line 125) | def graylog_logging_destination function change_database_connection_pool_size (line 144) | def change_database_connection_pool_size(new_size) function branch (line 158) | def branch function version (line 167) | def version function read_version_file (line 175) | def read_version_file(file) FILE: lib/postal/config_schema.rb type Postal (line 5) | module Postal function substitute_config_file_root (line 596) | def substitute_config_file_root(string) FILE: lib/postal/error.rb type Postal (line 3) | module Postal class Error (line 5) | class Error < StandardError type Errors (line 8) | module Errors class AuthenticationError (line 9) | class AuthenticationError < Error method initialize (line 13) | def initialize(error) method to_s (line 18) | def to_s FILE: lib/postal/helm_config_exporter.rb type Postal (line 5) | module Postal class HelmConfigExporter (line 6) | class HelmConfigExporter < Konfig::Exporters::Abstract method export (line 8) | def export FILE: lib/postal/helpers.rb type Postal (line 3) | module Postal type Helpers (line 4) | module Helpers function strip_name_from_address (line 6) | def self.strip_name_from_address(address) FILE: lib/postal/http.rb type Postal (line 6) | module Postal type HTTP (line 7) | module HTTP function get (line 9) | def self.get(url, options = {}) function post (line 13) | def self.post(url, options = {}) function request (line 17) | def self.request(method, url, options = {}) FILE: lib/postal/legacy_config_source.rb type Postal (line 6) | module Postal class LegacyConfigSource (line 7) | class LegacyConfigSource < Konfig::Sources::Abstract method initialize (line 106) | def initialize(config) method get (line 111) | def get(path, attribute: nil) FILE: lib/postal/message_db/click.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB class Click (line 5) | class Click method initialize (line 7) | def initialize(attributes, link) FILE: lib/postal/message_db/connection_pool.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB class ConnectionPool (line 5) | class ConnectionPool method initialize (line 9) | def initialize method use (line 14) | def use method checkout (line 43) | def checkout method checkin (line 52) | def checkin(connection) method add_new_connection (line 58) | def add_new_connection method establish_connection (line 64) | def establish_connection FILE: lib/postal/message_db/database.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB class Database (line 5) | class Database method connection_pool (line 9) | def connection_pool method initialize (line 15) | def initialize(organization_id, server_id, database_name: nil) method server (line 27) | def server method schema_version (line 34) | def schema_version method message (line 46) | def message(*args) method messages (line 53) | def messages(*args) method messages_with_pagination (line 57) | def messages_with_pagination(*args) method new_message (line 65) | def new_message(attributes = {}) method total_size (line 72) | def total_size method live_stats (line 79) | def live_stats method statistics (line 86) | def statistics method provisioner (line 93) | def provisioner method suppression_list (line 100) | def suppression_list method webhooks (line 107) | def webhooks method raw_table_name_for_date (line 114) | def raw_table_name_for_date(date) method insert_raw_message (line 121) | def insert_raw_message(data, date = Time.now.utc.to_date) method select (line 149) | def select(table, options = {}) method select_with_pagination (line 188) | def select_with_pagination(table, page, options = {}) method update (line 213) | def update(table, attributes, options = {}) method insert (line 229) | def insert(table, attributes) method insert_multi (line 242) | def insert_multi(table, keys, values) method delete (line 262) | def delete(table, options = {}) method database_name (line 274) | def database_name class ResultForExplainPrinter (line 281) | class ResultForExplainPrinter method initialize (line 286) | def initialize(result) method stringify_keys (line 298) | def stringify_keys(hash) method escape (line 302) | def escape(value) method query (line 316) | def query(query) method query_on_connection (line 324) | def query_on_connection(connection, query) method logger (line 340) | def logger method with_mysql (line 344) | def with_mysql(&block) method build_where_string (line 348) | def build_where_string(attributes, joiner = ", ") method hash_to_sql (line 352) | def hash_to_sql(hash, joiner = ", ") FILE: lib/postal/message_db/delivery.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB class Delivery (line 5) | class Delivery method create (line 7) | def self.create(message, attributes = {}) method initialize (line 24) | def initialize(message, attributes) method method_missing (line 29) | def method_missing(name, value = nil, &block) method respond_to_missing? (line 35) | def respond_to_missing?(name, include_private = false) method timestamp (line 39) | def timestamp method update_statistics (line 43) | def update_statistics method send_webhooks (line 53) | def send_webhooks method webhook_hash (line 59) | def webhook_hash method webhook_event (line 72) | def webhook_event FILE: lib/postal/message_db/live_stats.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB class LiveStats (line 5) | class LiveStats method initialize (line 7) | def initialize(database) method increment (line 14) | def increment(type) method total (line 26) | def total(minutes, options = {}) FILE: lib/postal/message_db/load.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB class Load (line 5) | class Load method initialize (line 7) | def initialize(attributes) FILE: lib/postal/message_db/message.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB class Message (line 5) | class Message class NotFound (line 7) | class NotFound < Postal::Error method find_one (line 10) | def self.find_one(database, query) method find (line 17) | def self.find(database, options = {}) method find_with_pagination (line 29) | def self.find_with_pagination(database, page, options = {}) method initialize (line 37) | def initialize(database, attributes) method reload (line 42) | def reload method server (line 49) | def server method credential (line 56) | def credential method route (line 63) | def route method endpoint (line 70) | def endpoint method domain (line 81) | def domain method copy_attributes_from_raw_message (line 88) | def copy_attributes_from_raw_message method timestamp (line 101) | def timestamp method last_delivery_attempt (line 108) | def last_delivery_attempt method hold_expiry (line 115) | def hold_expiry method read? (line 122) | def read? method create_delivery (line 129) | def create_delivery(status, options = {}) method deliveries (line 139) | def deliveries method clicks (line 148) | def clicks method loads (line 165) | def loads method activity_entries (line 177) | def activity_entries method method_missing (line 184) | def method_missing(name, value = nil, &block) method respond_to_missing? (line 192) | def respond_to_missing?(name, include_private = false) method persisted? (line 200) | def persisted? method save (line 207) | def save(queue_on_create: true) method update (line 216) | def update(attributes_to_change) method delete (line 228) | def delete method raw_headers (line 237) | def raw_headers method raw_body (line 248) | def raw_body method raw_message (line 259) | def raw_message method raw_message= (line 266) | def raw_message=(raw) method save_raw_message (line 273) | def save_raw_message method raw_message? (line 294) | def raw_message? method plain_body (line 301) | def plain_body method html_body (line 308) | def html_body method html_body_without_tracking_image (line 315) | def html_body_without_tracking_image method attachments (line 322) | def attachments method headers (line 329) | def headers method recipient_domain (line 346) | def recipient_domain method add_to_message_queue (line 353) | def add_to_message_queue(**options) method batch_key (line 366) | def batch_key method queued_message (line 383) | def queued_message method spam_status (line 390) | def spam_status method held? (line 399) | def held? method has_outgoing_headers? (line 406) | def has_outgoing_headers? method add_outgoing_headers (line 413) | def add_outgoing_headers method append_headers (line 426) | def append_headers(*headers) method webhook_hash (line 438) | def webhook_hash method bounce! (line 456) | def bounce!(bounce_message) method send_bounces? (line 468) | def send_bounces? method create_load (line 475) | def create_load(request) method create_link (line 489) | def create_link(url) method original_messages (line 499) | def original_messages method rcpt_to_return_path? (line 513) | def rcpt_to_return_path? method inspect_message (line 520) | def inspect_message method spam_checks (line 536) | def spam_checks method cancel_hold (line 543) | def cancel_hold method parse_content (line 552) | def parse_content method parsed? (line 568) | def parsed? method should_parse? (line 575) | def should_parse? method _update (line 581) | def _update method _create (line 585) | def _create(queue: true) method mail (line 597) | def mail FILE: lib/postal/message_db/migration.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB class Migration (line 5) | class Migration method initialize (line 7) | def initialize(database) method up (line 11) | def up method run (line 14) | def self.run(database, start_from: database.schema_version, silent... FILE: lib/postal/message_db/migrations/01_create_migrations.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB type Migrations (line 5) | module Migrations class CreateMigrations (line 6) | class CreateMigrations < Postal::MessageDB::Migration method up (line 8) | def up FILE: lib/postal/message_db/migrations/02_create_messages.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB type Migrations (line 5) | module Migrations class CreateMessages (line 6) | class CreateMessages < Postal::MessageDB::Migration method up (line 8) | def up FILE: lib/postal/message_db/migrations/03_create_deliveries.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB type Migrations (line 5) | module Migrations class CreateDeliveries (line 6) | class CreateDeliveries < Postal::MessageDB::Migration method up (line 8) | def up FILE: lib/postal/message_db/migrations/04_create_live_stats.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB type Migrations (line 5) | module Migrations class CreateLiveStats (line 6) | class CreateLiveStats < Postal::MessageDB::Migration method up (line 8) | def up FILE: lib/postal/message_db/migrations/05_create_raw_message_sizes.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB type Migrations (line 5) | module Migrations class CreateRawMessageSizes (line 6) | class CreateRawMessageSizes < Postal::MessageDB::Migration method up (line 8) | def up FILE: lib/postal/message_db/migrations/06_create_clicks.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB type Migrations (line 5) | module Migrations class CreateClicks (line 6) | class CreateClicks < Postal::MessageDB::Migration method up (line 8) | def up FILE: lib/postal/message_db/migrations/07_create_loads.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB type Migrations (line 5) | module Migrations class CreateLoads (line 6) | class CreateLoads < Postal::MessageDB::Migration method up (line 8) | def up FILE: lib/postal/message_db/migrations/08_create_stats.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB type Migrations (line 5) | module Migrations class CreateStats (line 6) | class CreateStats < Postal::MessageDB::Migration method up (line 8) | def up FILE: lib/postal/message_db/migrations/09_create_links.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB type Migrations (line 5) | module Migrations class CreateLinks (line 6) | class CreateLinks < Postal::MessageDB::Migration method up (line 8) | def up FILE: lib/postal/message_db/migrations/10_create_spam_checks.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB type Migrations (line 5) | module Migrations class CreateSpamChecks (line 6) | class CreateSpamChecks < Postal::MessageDB::Migration method up (line 8) | def up FILE: lib/postal/message_db/migrations/11_add_time_to_deliveries.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB type Migrations (line 5) | module Migrations class AddTimeToDeliveries (line 6) | class AddTimeToDeliveries < Postal::MessageDB::Migration method up (line 8) | def up FILE: lib/postal/message_db/migrations/12_add_hold_expiry.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB type Migrations (line 5) | module Migrations class AddHoldExpiry (line 6) | class AddHoldExpiry < Postal::MessageDB::Migration method up (line 8) | def up FILE: lib/postal/message_db/migrations/13_add_index_to_message_status.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB type Migrations (line 5) | module Migrations class AddIndexToMessageStatus (line 6) | class AddIndexToMessageStatus < Postal::MessageDB::Migration method up (line 8) | def up FILE: lib/postal/message_db/migrations/14_create_suppressions.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB type Migrations (line 5) | module Migrations class CreateSuppressions (line 6) | class CreateSuppressions < Postal::MessageDB::Migration method up (line 8) | def up FILE: lib/postal/message_db/migrations/15_create_webhook_requests.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB type Migrations (line 5) | module Migrations class CreateWebhookRequests (line 6) | class CreateWebhookRequests < Postal::MessageDB::Migration method up (line 8) | def up FILE: lib/postal/message_db/migrations/16_add_url_and_hook_to_webhooks.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB type Migrations (line 5) | module Migrations class AddUrlAndHookToWebhooks (line 6) | class AddUrlAndHookToWebhooks < Postal::MessageDB::Migration method up (line 8) | def up FILE: lib/postal/message_db/migrations/17_add_replaced_link_count_to_messages.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB type Migrations (line 5) | module Migrations class AddReplacedLinkCountToMessages (line 6) | class AddReplacedLinkCountToMessages < Postal::MessageDB::Migration method up (line 8) | def up FILE: lib/postal/message_db/migrations/18_add_endpoints_to_messages.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB type Migrations (line 5) | module Migrations class AddEndpointsToMessages (line 6) | class AddEndpointsToMessages < Postal::MessageDB::Migration method up (line 8) | def up FILE: lib/postal/message_db/migrations/19_convert_database_to_utf8mb4.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB type Migrations (line 5) | module Migrations class ConvertDatabaseToUtf8mb4 (line 6) | class ConvertDatabaseToUtf8mb4 < Postal::MessageDB::Migration method up (line 8) | def up FILE: lib/postal/message_db/migrations/20_increase_links_url_size.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB type Migrations (line 5) | module Migrations class IncreaseLinksUrlSize (line 6) | class IncreaseLinksUrlSize < Postal::MessageDB::Migration method up (line 8) | def up FILE: lib/postal/message_db/provisioner.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB class Provisioner (line 5) | class Provisioner method initialize (line 7) | def initialize(database) method provision (line 14) | def provision method migrate (line 23) | def migrate(start_from: @database.schema_version, silent: false) method exists? (line 30) | def exists? method create (line 37) | def create method drop (line 47) | def drop method create_table (line 57) | def create_table(table_name, options) method drop_table (line 64) | def drop_table(table_name) method clean (line 72) | def clean method create_raw_table (line 83) | def create_raw_table(table) method raw_tables (line 98) | def raw_tables(max_age = 30) method remove_raw_tables_older_than (line 114) | def remove_raw_tables_older_than(max_age = 30) method remove_raw_table (line 123) | def remove_raw_table(table) method remove_messages (line 132) | def remove_messages(max_age = 60) method remove_raw_tables_until_less_than_size (line 147) | def remove_raw_tables_until_less_than_size(size) method create_table_query (line 163) | def create_table_query(table_name, options) FILE: lib/postal/message_db/statistics.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB class Statistics (line 5) | class Statistics method initialize (line 7) | def initialize(database) method increment_one (line 17) | def increment_one(type, field, time = Time.now) method increment_all (line 33) | def increment_all(time, field) method get (line 42) | def get(type, counters, start_date = Time.now, quantity = 10) FILE: lib/postal/message_db/suppression_list.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB class SuppressionList (line 5) | class SuppressionList method initialize (line 7) | def initialize(database) method add (line 11) | def add(type, address, options = {}) method get (line 22) | def get(type, address) method all_with_pagination (line 26) | def all_with_pagination(page) method remove (line 30) | def remove(type, address) method prune (line 34) | def prune FILE: lib/postal/message_db/webhooks.rb type Postal (line 3) | module Postal type MessageDB (line 4) | module MessageDB class Webhooks (line 5) | class Webhooks method initialize (line 7) | def initialize(database) method record (line 11) | def record(attributes = {}) method list (line 15) | def list(page = 1) method find (line 21) | def find(uuid) method prune (line 26) | def prune class RequestNotFound (line 32) | class RequestNotFound < Postal::Error class Request (line 35) | class Request method initialize (line 37) | def initialize(attributes) method [] (line 41) | def [](name) method timestamp (line 45) | def timestamp method event (line 49) | def event method status_code (line 53) | def status_code method url (line 57) | def url method uuid (line 61) | def uuid method payload (line 65) | def payload method pretty_payload (line 69) | def pretty_payload method body (line 76) | def body method attempt (line 80) | def attempt method will_retry? (line 84) | def will_retry? FILE: lib/postal/message_inspection.rb type Postal (line 3) | module Postal class MessageInspection (line 4) | class MessageInspection method initialize (line 12) | def initialize(message, scope) method spam_score (line 19) | def spam_score method scan (line 25) | def scan method scan (line 33) | def scan(message, scope) FILE: lib/postal/message_inspector.rb type Postal (line 3) | module Postal class MessageInspector (line 4) | class MessageInspector method initialize (line 6) | def initialize(config) method inspect_message (line 12) | def inspect_message(message, scope, inspection) method logger (line 17) | def logger method inspectors (line 25) | def inspectors FILE: lib/postal/message_inspectors/clamav.rb type Postal (line 3) | module Postal type MessageInspectors (line 4) | module MessageInspectors class Clamav (line 5) | class Clamav < MessageInspector method inspect_message (line 7) | def inspect_message(inspection) FILE: lib/postal/message_inspectors/rspamd.rb type Postal (line 5) | module Postal type MessageInspectors (line 6) | module MessageInspectors class Rspamd (line 7) | class Rspamd < MessageInspector class Error (line 9) | class Error < StandardError method inspect_message (line 12) | def inspect_message(inspection) method request (line 28) | def request(message, scope) FILE: lib/postal/message_inspectors/spam_assassin.rb type Postal (line 3) | module Postal type MessageInspectors (line 4) | module MessageInspectors class SpamAssassin (line 5) | class SpamAssassin < MessageInspector method inspect_message (line 12) | def inspect_message(inspection) FILE: lib/postal/message_parser.rb type Postal (line 3) | module Postal class MessageParser (line 4) | class MessageParser method initialize (line 8) | def initialize(message) method actioned? (line 23) | def actioned? method new_body (line 27) | def new_body method new_headers (line 31) | def new_headers method generate (line 37) | def generate method parse_parts (line 68) | def parse_parts(parts) method parse (line 87) | def parse(part, type = nil) method insert_links (line 99) | def insert_links(part, type = nil) method insert_tracking_image (line 138) | def insert_tracking_image(part) method domain (line 148) | def domain method track_domain? (line 152) | def track_domain?(domain) FILE: lib/postal/signer.rb type Postal (line 4) | module Postal class Signer (line 5) | class Signer method initialize (line 11) | def initialize(private_key) method public_key (line 23) | def public_key method sign (line 31) | def sign(data) method sign64 (line 39) | def sign64(data) method jwk (line 46) | def jwk method sha1_sign (line 54) | def sha1_sign(data) method sha1_sign64 (line 62) | def sha1_sign64(data) FILE: lib/postal/spam_check.rb type Postal (line 3) | module Postal class SpamCheck (line 4) | class SpamCheck method initialize (line 8) | def initialize(code, score, description = nil) method to_hash (line 14) | def to_hash FILE: lib/postal/yaml_config_exporter.rb type Postal (line 5) | module Postal class YamlConfigExporter (line 6) | class YamlConfigExporter < Konfig::Exporters::Abstract method export (line 8) | def export FILE: lib/tracking_middleware.rb class TrackingMiddleware (line 3) | class TrackingMiddleware method initialize (line 7) | def initialize(app = nil) method call (line 11) | def call(env) method dispatch_image_request (line 34) | def dispatch_image_request(request, server_token, message_token) method dispatch_redirect_request (line 75) | def dispatch_redirect_request(request, server_token, link_token) method get_message_db_from_server_token (line 115) | def get_message_db_from_server_token(token) FILE: spec/helpers/general_helpers.rb type GeneralHelpers (line 3) | module GeneralHelpers function create_plain_text_message (line 5) | def create_plain_text_message(server, text, to = "test@example.com", o... FILE: spec/helpers/message_db_mocking.rb type GlobalMessageDB (line 3) | module GlobalMessageDB function find_or_create (line 7) | def find_or_create function exists? (line 14) | def exists? FILE: spec/helpers/message_factory.rb class MessageFactory (line 5) | class MessageFactory method initialize (line 7) | def initialize(server) method incoming (line 11) | def incoming(route: nil, &block) method outgoing (line 25) | def outgoing(domain: nil, credential: nil, &block) method incoming (line 45) | def incoming(server, **kwargs, &block) method outgoing (line 49) | def outgoing(server, **kwargs, &block) method create_message (line 57) | def create_message method create_mail (line 69) | def create_mail(to, from) FILE: spec/helpers/test_logger.rb class TestLogger (line 3) | class TestLogger method initialize (line 5) | def initialize method print! (line 11) | def print! method add (line 15) | def add(level, message, **tags) method tagged (line 31) | def tagged(**tags, &block) method log_line (line 35) | def log_line(match) method has_logged? (line 43) | def has_logged?(match) FILE: spec/lib/message_dequeuer/base_spec.rb type MessageDequeuer (line 5) | module MessageDequeuer FILE: spec/lib/message_dequeuer/incoming_message_processor_spec.rb type MessageDequeuer (line 5) | module MessageDequeuer FILE: spec/lib/message_dequeuer/initial_message_processor_spec.rb type MessageDequeuer (line 5) | module MessageDequeuer FILE: spec/lib/message_dequeuer/outgoing_message_processor_spec.rb type MessageDequeuer (line 5) | module MessageDequeuer FILE: spec/lib/message_dequeuer/single_message_processor_spec.rb type MessageDequeuer (line 5) | module MessageDequeuer FILE: spec/lib/message_dequeuer/state_spec.rb type MessageDequeuer (line 5) | module MessageDequeuer FILE: spec/lib/postal/legacy_config_source_spec.rb type Postal (line 5) | module Postal FILE: spec/lib/postal/signer_spec.rb type Postal (line 4) | module Postal FILE: spec/lib/smtp_client/endpoint_spec.rb type SMTPClient (line 5) | module SMTPClient FILE: spec/lib/smtp_client/server_spec.rb type SMTPClient (line 5) | module SMTPClient FILE: spec/lib/smtp_server/client/auth_spec.rb type SMTPServer (line 5) | module SMTPServer FILE: spec/lib/smtp_server/client/data_spec.rb type SMTPServer (line 5) | module SMTPServer FILE: spec/lib/smtp_server/client/finished_spec.rb type SMTPServer (line 5) | module SMTPServer FILE: spec/lib/smtp_server/client/helo_spec.rb type SMTPServer (line 5) | module SMTPServer FILE: spec/lib/smtp_server/client/mail_from_spec.rb type SMTPServer (line 5) | module SMTPServer FILE: spec/lib/smtp_server/client/proxy_spec.rb type SMTPServer (line 5) | module SMTPServer FILE: spec/lib/smtp_server/client/rcpt_to_spec.rb type SMTPServer (line 5) | module SMTPServer FILE: spec/lib/smtp_server/client_spec.rb type SMTPServer (line 5) | module SMTPServer FILE: spec/lib/worker/jobs/process_queued_messages_job_spec.rb type Worker (line 5) | module Worker type Jobs (line 6) | module Jobs FILE: spec/lib/worker/jobs/process_webhook_requests_job_spec.rb type Worker (line 5) | module Worker type Jobs (line 6) | module Jobs