gitextract_spx0x18a/ ├── .dockerignore ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── config.yml │ └── workflows/ │ ├── ci.yml │ └── close.yml ├── .gitignore ├── .release-please-manifest.json ├── .rubocop.yml ├── .ruby-version ├── CHANGELOG.md ├── CONTRIBUTING.md ├── Dockerfile ├── Gemfile ├── MIT-LICENCE ├── Procfile.dev ├── README.md ├── Rakefile ├── SECURITY.md ├── app/ │ ├── assets/ │ │ ├── config/ │ │ │ └── manifest.js │ │ ├── images/ │ │ │ └── .keep │ │ ├── javascripts/ │ │ │ └── application/ │ │ │ ├── application.coffee │ │ │ ├── elements/ │ │ │ │ ├── ajax.coffee │ │ │ │ ├── mail_graph.coffee │ │ │ │ ├── remembering.coffee │ │ │ │ └── searchable.coffee │ │ │ └── vendor/ │ │ │ ├── chartist.js │ │ │ └── jquery.multibox.js │ │ └── stylesheets/ │ │ └── application/ │ │ ├── application.scss │ │ ├── components/ │ │ │ ├── _admin_stats.scss │ │ │ ├── _button_set.scss │ │ │ ├── _checkbox_list.scss │ │ │ ├── _credential_list.scss │ │ │ ├── _danger_zone.scss │ │ │ ├── _data_table.scss │ │ │ ├── _delivery_list.scss │ │ │ ├── _domain_list.scss │ │ │ ├── _endpoint_list.scss │ │ │ ├── _error_explanation.scss │ │ │ ├── _field_set.scss │ │ │ ├── _flash_display.scss │ │ │ ├── _flash_message.scss │ │ │ ├── _footer.scss │ │ │ ├── _grid.scss │ │ │ ├── _headers_list.scss │ │ │ ├── _inlineError.scss │ │ │ ├── _invoice_list.scss │ │ │ ├── _ip_list.scss │ │ │ ├── _ip_pool_rule_list.scss │ │ │ ├── _large_list.scss │ │ │ ├── _limit.scss │ │ │ ├── _login_form.scss │ │ │ ├── _mail_graph.scss │ │ │ ├── _message_activity.scss │ │ │ ├── _message_header.scss │ │ │ ├── _message_list.scss │ │ │ ├── _message_properties_page.scss │ │ │ ├── _message_search.scss │ │ │ ├── _multibox.scss │ │ │ ├── _nav_bar.scss │ │ │ ├── _new_message_type.scss │ │ │ ├── _no_data.scss │ │ │ ├── _page_content.scss │ │ │ ├── _page_header.scss │ │ │ ├── _pagination.scss │ │ │ ├── _rentention_limits.scss │ │ │ ├── _route_list.scss │ │ │ ├── _route_name_input.scss │ │ │ ├── _server_header.scss │ │ │ ├── _sidebar.scss │ │ │ ├── _sidebar_server_list.scss │ │ │ ├── _simple_pagination.scss │ │ │ ├── _site_content.scss │ │ │ ├── _site_header.scss │ │ │ ├── _spam_check_list.scss │ │ │ ├── _starter_credit_pack.scss │ │ │ ├── _sub_page_box.scss │ │ │ ├── _suppression_list.scss │ │ │ ├── _suspension_box.scss │ │ │ ├── _title_with_links.scss │ │ │ ├── _user_list.scss │ │ │ ├── _webhook_list.scss │ │ │ └── _webhook_request_list.scss │ │ ├── elements/ │ │ │ ├── _bar.scss │ │ │ ├── _button.scss │ │ │ ├── _code_block.scss │ │ │ ├── _input.scss │ │ │ ├── _label.scss │ │ │ ├── _misc.scss │ │ │ └── _spam_range.scss │ │ ├── global/ │ │ │ ├── _fonts.scss │ │ │ ├── _mixins.scss │ │ │ ├── _reset.scss │ │ │ ├── _utility.scss │ │ │ └── _variables.scss │ │ └── vendor/ │ │ └── _chartist.scss │ ├── controllers/ │ │ ├── address_endpoints_controller.rb │ │ ├── application_controller.rb │ │ ├── concerns/ │ │ │ ├── .keep │ │ │ └── within_organization.rb │ │ ├── credentials_controller.rb │ │ ├── domains_controller.rb │ │ ├── help_controller.rb │ │ ├── http_endpoints_controller.rb │ │ ├── ip_addresses_controller.rb │ │ ├── ip_pool_rules_controller.rb │ │ ├── ip_pools_controller.rb │ │ ├── legacy_api/ │ │ │ ├── base_controller.rb │ │ │ ├── messages_controller.rb │ │ │ └── send_controller.rb │ │ ├── messages_controller.rb │ │ ├── organization_ip_pools_controller.rb │ │ ├── organizations_controller.rb │ │ ├── routes_controller.rb │ │ ├── servers_controller.rb │ │ ├── sessions_controller.rb │ │ ├── smtp_endpoints_controller.rb │ │ ├── track_domains_controller.rb │ │ ├── user_controller.rb │ │ ├── users_controller.rb │ │ ├── webhooks_controller.rb │ │ └── well_known_controller.rb │ ├── helpers/ │ │ └── application_helper.rb │ ├── lib/ │ │ ├── dkim_header.rb │ │ ├── dns_resolver.rb │ │ ├── message_dequeuer/ │ │ │ ├── base.rb │ │ │ ├── incoming_message_processor.rb │ │ │ ├── initial_processor.rb │ │ │ ├── outgoing_message_processor.rb │ │ │ ├── single_message_processor.rb │ │ │ └── state.rb │ │ ├── message_dequeuer.rb │ │ ├── query_string.rb │ │ ├── received_header.rb │ │ ├── reply_separator.rb │ │ ├── smtp_client/ │ │ │ ├── endpoint.rb │ │ │ ├── server.rb │ │ │ └── ssl_modes.rb │ │ ├── smtp_server/ │ │ │ ├── client.rb │ │ │ └── server.rb │ │ └── worker/ │ │ ├── jobs/ │ │ │ ├── base_job.rb │ │ │ ├── process_queued_messages_job.rb │ │ │ └── process_webhook_requests_job.rb │ │ └── process.rb │ ├── mailers/ │ │ ├── app_mailer.rb │ │ └── application_mailer.rb │ ├── models/ │ │ ├── additional_route_endpoint.rb │ │ ├── address_endpoint.rb │ │ ├── application_record.rb │ │ ├── bounce_message.rb │ │ ├── concerns/ │ │ │ ├── .keep │ │ │ ├── has_authentication.rb │ │ │ ├── has_dns_checks.rb │ │ │ ├── has_locking.rb │ │ │ ├── has_message.rb │ │ │ ├── has_soft_destroy.rb │ │ │ └── has_uuid.rb │ │ ├── credential.rb │ │ ├── domain.rb │ │ ├── http_endpoint.rb │ │ ├── incoming_message_prototype.rb │ │ ├── ip_address.rb │ │ ├── ip_pool.rb │ │ ├── ip_pool_rule.rb │ │ ├── organization.rb │ │ ├── organization_ip_pool.rb │ │ ├── organization_user.rb │ │ ├── outgoing_message_prototype.rb │ │ ├── queued_message.rb │ │ ├── route.rb │ │ ├── scheduled_task.rb │ │ ├── server.rb │ │ ├── smtp_endpoint.rb │ │ ├── statistic.rb │ │ ├── track_domain.rb │ │ ├── user.rb │ │ ├── user_invite.rb │ │ ├── webhook.rb │ │ ├── webhook_event.rb │ │ ├── webhook_request.rb │ │ └── worker_role.rb │ ├── scheduled_tasks/ │ │ ├── action_deletions_scheduled_task.rb │ │ ├── application_scheduled_task.rb │ │ ├── check_all_dns_scheduled_task.rb │ │ ├── cleanup_authie_sessions_scheduled_task.rb │ │ ├── expire_held_messages_scheduled_task.rb │ │ ├── process_message_retention_scheduled_task.rb │ │ ├── prune_suppression_lists_scheduled_task.rb │ │ ├── prune_webhook_requests_scheduled_task.rb │ │ ├── send_notifications_scheduled_task.rb │ │ └── tidy_queued_messages_task.rb │ ├── senders/ │ │ ├── base_sender.rb │ │ ├── http_sender.rb │ │ ├── send_result.rb │ │ └── smtp_sender.rb │ ├── services/ │ │ └── webhook_delivery_service.rb │ ├── util/ │ │ ├── has_prometheus_metrics.rb │ │ ├── health_server.rb │ │ └── user_creator.rb │ └── views/ │ ├── address_endpoints/ │ │ ├── _form.html.haml │ │ ├── edit.html.haml │ │ ├── index.html.haml │ │ └── new.html.haml │ ├── app_mailer/ │ │ ├── password_reset.text.erb │ │ ├── server_send_limit_approaching.text.erb │ │ ├── server_send_limit_exceeded.text.erb │ │ ├── server_suspended.text.erb │ │ ├── test_message.text.erb │ │ └── verify_domain.text.erb │ ├── credentials/ │ │ ├── _form.html.haml │ │ ├── edit.html.haml │ │ ├── index.html.haml │ │ └── new.html.haml │ ├── domains/ │ │ ├── _nav.html.haml │ │ ├── _verify_with_dns.html.haml │ │ ├── _verify_with_email.html.haml │ │ ├── index.html.haml │ │ ├── new.html.haml │ │ ├── setup.html.haml │ │ └── verify.html.haml │ ├── help/ │ │ ├── _header.html.haml │ │ ├── incoming.html.haml │ │ └── outgoing.html.haml │ ├── http_endpoints/ │ │ ├── _form.html.haml │ │ ├── edit.html.haml │ │ ├── index.html.haml │ │ └── new.html.haml │ ├── ip_addresses/ │ │ ├── _form.html.haml │ │ ├── edit.html.haml │ │ └── new.html.haml │ ├── ip_pool_rules/ │ │ ├── _form.html.haml │ │ ├── edit.html.haml │ │ ├── index.html.haml │ │ └── new.html.haml │ ├── ip_pools/ │ │ ├── _form.html.haml │ │ ├── edit.html.haml │ │ ├── index.html.haml │ │ └── new.html.haml │ ├── layouts/ │ │ ├── application.html.haml │ │ └── sub.html.haml │ ├── messages/ │ │ ├── _deliveries.html.haml │ │ ├── _header.html.haml │ │ ├── _index.html.haml │ │ ├── _list.html.haml │ │ ├── _message_header.html.haml │ │ ├── _search.html.haml │ │ ├── activity.html.haml │ │ ├── attachments.html.haml │ │ ├── headers.html.haml │ │ ├── held.html.haml │ │ ├── html.html.haml │ │ ├── incoming.html.haml │ │ ├── new.html.haml │ │ ├── outgoing.html.haml │ │ ├── plain.html.haml │ │ ├── show.html.haml │ │ ├── spam_checks.html.haml │ │ └── suppressions.html.haml │ ├── organization_ip_pools/ │ │ ├── _nav.html.haml │ │ └── index.html.haml │ ├── organizations/ │ │ ├── _nav.html.haml │ │ ├── delete.html.haml │ │ ├── edit.html.haml │ │ ├── index.html.haml │ │ └── new.html.haml │ ├── routes/ │ │ ├── _form.html.haml │ │ ├── _header.html.haml │ │ ├── edit.html.haml │ │ ├── index.html.haml │ │ └── new.html.haml │ ├── servers/ │ │ ├── _form.html.haml │ │ ├── _header.html.haml │ │ ├── _settings_header.html.haml │ │ ├── _sidebar.html.haml │ │ ├── advanced.html.haml │ │ ├── delete.html.haml │ │ ├── edit.html.haml │ │ ├── index.html.haml │ │ ├── limits.html.haml │ │ ├── new.html.haml │ │ ├── queue.html.haml │ │ ├── retention.html.haml │ │ ├── show.html.haml │ │ └── spam.html.haml │ ├── sessions/ │ │ ├── begin_password_reset.html.haml │ │ ├── finish_password_reset.html.haml │ │ └── new.html.haml │ ├── shared/ │ │ └── _message_db_pagination.html.haml │ ├── smtp_endpoints/ │ │ ├── _form.html.haml │ │ ├── edit.html.haml │ │ ├── index.html.haml │ │ └── new.html.haml │ ├── track_domains/ │ │ ├── _form.html.haml │ │ ├── edit.html.haml │ │ ├── index.html.haml │ │ └── new.html.haml │ ├── user/ │ │ └── edit.html.haml │ ├── users/ │ │ ├── _form.html.haml │ │ ├── edit.html.haml │ │ ├── index.html.haml │ │ └── new.html.haml │ └── webhooks/ │ ├── _form.html.haml │ ├── _header.html.haml │ ├── edit.html.haml │ ├── history.html.haml │ ├── history_request.html.haml │ ├── index.html.haml │ └── new.html.haml ├── bin/ │ ├── bundle │ ├── dev │ ├── postal │ ├── rails │ ├── rake │ ├── rspec │ ├── setup │ └── update ├── config/ │ ├── application.rb │ ├── boot.rb │ ├── database.yml │ ├── environment.rb │ ├── environments/ │ │ ├── development.rb │ │ ├── production.rb │ │ └── test.rb │ ├── examples/ │ │ ├── development.yml │ │ └── test.yml │ ├── initializers/ │ │ ├── _wait_for_migrations.rb │ │ ├── application_controller_renderer.rb │ │ ├── assets.rb │ │ ├── backtrace_silencers.rb │ │ ├── content_security_policy.rb │ │ ├── cookies_serializer.rb │ │ ├── filter_parameter_logging.rb │ │ ├── inflections.rb │ │ ├── logging.rb │ │ ├── mail_extensions.rb │ │ ├── mime_types.rb │ │ ├── new_framework_defaults_7_0.rb │ │ ├── omniauth.rb │ │ ├── permissions_policy.rb │ │ ├── postal.rb │ │ ├── record_key_for_dom.rb │ │ ├── secret_key.rb │ │ ├── secure_headers.rb │ │ ├── sentry.rb │ │ ├── session_store.rb │ │ ├── smtp.rb │ │ ├── smtp_extensions.rb │ │ ├── trusted_proxies.rb │ │ ├── wrap_parameters.rb │ │ └── zeitwerk.rb │ ├── locales/ │ │ └── en.yml │ ├── puma.rb │ └── routes.rb ├── config.ru ├── db/ │ ├── migrate/ │ │ ├── 20161003195209_create_authie_sessions.authie.rb │ │ ├── 20161003195210_add_indexes_to_authie_sessions.authie.rb │ │ ├── 20161003195211_add_parent_id_to_authie_sessions.authie.rb │ │ ├── 20161003195212_add_two_factor_auth_fields_to_authie.authie.rb │ │ ├── 20170418200606_initial_schema.rb │ │ ├── 20170421195414_add_token_hashes_to_authie_sessions.authie.rb │ │ ├── 20170421195415_add_index_to_token_hashes_on_authie_sessions.authie.rb │ │ ├── 20170428153353_remove_type_from_ip_pools.rb │ │ ├── 20180216114344_add_host_to_authie_sessions.authie.rb │ │ ├── 20200717083943_add_uuid_to_credentials.rb │ │ ├── 20210727210551_add_priority_to_ip_addresses.rb │ │ ├── 20240206173036_add_privacy_mode_to_servers.rb │ │ ├── 20240213165450_create_worker_roles.rb │ │ ├── 20240213171830_create_scheduled_tasks.rb │ │ ├── 20240214132253_add_lock_fields_to_webhook_requests.rb │ │ ├── 20240223141500_add_two_factor_required_to_sessions.authie.rb │ │ ├── 20240223141501_add_countries_to_authie_sessions.authie.rb │ │ └── 20240311205229_add_oidc_fields_to_user.rb │ ├── schema.rb │ └── seeds.rb ├── doc/ │ └── config/ │ ├── configuration.md │ ├── environment-variables.md │ └── yaml.yml ├── docker/ │ ├── ci-config/ │ │ └── signing.key │ └── wait-for.sh ├── docker-compose.yml ├── lib/ │ ├── assets/ │ │ └── .keep │ ├── migration_waiter.rb │ ├── postal/ │ │ ├── config.rb │ │ ├── config_schema.rb │ │ ├── error.rb │ │ ├── helm_config_exporter.rb │ │ ├── helpers.rb │ │ ├── http.rb │ │ ├── legacy_config_source.rb │ │ ├── message_db/ │ │ │ ├── click.rb │ │ │ ├── connection_pool.rb │ │ │ ├── database.rb │ │ │ ├── delivery.rb │ │ │ ├── live_stats.rb │ │ │ ├── load.rb │ │ │ ├── message.rb │ │ │ ├── migration.rb │ │ │ ├── migrations/ │ │ │ │ ├── 01_create_migrations.rb │ │ │ │ ├── 02_create_messages.rb │ │ │ │ ├── 03_create_deliveries.rb │ │ │ │ ├── 04_create_live_stats.rb │ │ │ │ ├── 05_create_raw_message_sizes.rb │ │ │ │ ├── 06_create_clicks.rb │ │ │ │ ├── 07_create_loads.rb │ │ │ │ ├── 08_create_stats.rb │ │ │ │ ├── 09_create_links.rb │ │ │ │ ├── 10_create_spam_checks.rb │ │ │ │ ├── 11_add_time_to_deliveries.rb │ │ │ │ ├── 12_add_hold_expiry.rb │ │ │ │ ├── 13_add_index_to_message_status.rb │ │ │ │ ├── 14_create_suppressions.rb │ │ │ │ ├── 15_create_webhook_requests.rb │ │ │ │ ├── 16_add_url_and_hook_to_webhooks.rb │ │ │ │ ├── 17_add_replaced_link_count_to_messages.rb │ │ │ │ ├── 18_add_endpoints_to_messages.rb │ │ │ │ ├── 19_convert_database_to_utf8mb4.rb │ │ │ │ └── 20_increase_links_url_size.rb │ │ │ ├── provisioner.rb │ │ │ ├── statistics.rb │ │ │ ├── suppression_list.rb │ │ │ └── webhooks.rb │ │ ├── message_inspection.rb │ │ ├── message_inspector.rb │ │ ├── message_inspectors/ │ │ │ ├── clamav.rb │ │ │ ├── rspamd.rb │ │ │ └── spam_assassin.rb │ │ ├── message_parser.rb │ │ ├── signer.rb │ │ ├── spam_check.rb │ │ └── yaml_config_exporter.rb │ ├── postal.rb │ ├── tasks/ │ │ ├── .keep │ │ ├── auto_annotate_models.rake │ │ └── postal.rake │ └── tracking_middleware.rb ├── log/ │ └── .keep ├── public/ │ ├── 404.html │ ├── 422.html │ ├── 500.html │ └── robots.txt ├── release-please-config.json ├── resource/ │ └── postfix-bounce.msg ├── script/ │ ├── default_dkim_record.rb │ ├── generate_tls_certificate.rb │ ├── insert-bounce.rb │ ├── make_user.rb │ ├── queue_size.rb │ ├── send_html_email.rb │ ├── smtp_server.rb │ ├── test_app_smtp.rb │ ├── version.rb │ └── worker.rb ├── spec/ │ ├── apis/ │ │ └── legacy_api/ │ │ ├── messages/ │ │ │ ├── deliveries_spec.rb │ │ │ └── message_spec.rb │ │ └── send/ │ │ ├── message_spec.rb │ │ └── raw_spec.rb │ ├── examples/ │ │ ├── dkim_signing/ │ │ │ ├── email1.msg │ │ │ └── email2.msg │ │ └── full_legacy_config_file.yml │ ├── factories/ │ │ ├── address_endpoint_factory.rb │ │ ├── credential_factory.rb │ │ ├── domain_factory.rb │ │ ├── http_endpoint_factory.rb │ │ ├── ip_address_factory.rb │ │ ├── ip_pool_factory.rb │ │ ├── ip_pool_rule_factory.rb │ │ ├── organization_factory.rb │ │ ├── queued_message_factory.rb │ │ ├── route_factory.rb │ │ ├── server_factory.rb │ │ ├── smtp_endpoint_factory.rb │ │ ├── track_domain_factory.rb │ │ ├── user_factory.rb │ │ ├── webhook_factory.rb │ │ ├── webhook_request_factory.rb │ │ └── worker_role_factory.rb │ ├── helpers/ │ │ ├── general_helpers.rb │ │ ├── message_db_mocking.rb │ │ ├── message_factory.rb │ │ └── test_logger.rb │ ├── lib/ │ │ ├── dkim_header_spec.rb │ │ ├── dns_resolver_spec.rb │ │ ├── message_dequeuer/ │ │ │ ├── base_spec.rb │ │ │ ├── incoming_message_processor_spec.rb │ │ │ ├── initial_message_processor_spec.rb │ │ │ ├── outgoing_message_processor_spec.rb │ │ │ ├── single_message_processor_spec.rb │ │ │ └── state_spec.rb │ │ ├── message_dequeuer_spec.rb │ │ ├── postal/ │ │ │ ├── legacy_config_source_spec.rb │ │ │ ├── message_db/ │ │ │ │ ├── connection_pool_spec.rb │ │ │ │ └── database_spec.rb │ │ │ ├── message_parser_spec.rb │ │ │ └── signer_spec.rb │ │ ├── postal_spec.rb │ │ ├── query_string_spec.rb │ │ ├── received_header_spec.rb │ │ ├── smtp_client/ │ │ │ ├── endpoint_spec.rb │ │ │ └── server_spec.rb │ │ ├── smtp_server/ │ │ │ ├── client/ │ │ │ │ ├── auth_spec.rb │ │ │ │ ├── data_spec.rb │ │ │ │ ├── finished_spec.rb │ │ │ │ ├── helo_spec.rb │ │ │ │ ├── mail_from_spec.rb │ │ │ │ ├── proxy_spec.rb │ │ │ │ └── rcpt_to_spec.rb │ │ │ └── client_spec.rb │ │ └── worker/ │ │ └── jobs/ │ │ ├── process_queued_messages_job_spec.rb │ │ └── process_webhook_requests_job_spec.rb │ ├── models/ │ │ ├── domain_spec.rb │ │ ├── organization_spec.rb │ │ ├── outgoing_message_prototype_spec.rb │ │ ├── queued_message_spec.rb │ │ ├── server_spec.rb │ │ ├── user/ │ │ │ ├── authentication_spec.rb │ │ │ └── oidc_spec.rb │ │ ├── user_spec.rb │ │ └── worker_role_spec.rb │ ├── rails_helper.rb │ ├── scheduled_tasks/ │ │ └── tidy_queued_messages_task_spec.rb │ ├── senders/ │ │ └── smtp_sender_spec.rb │ ├── services/ │ │ └── webhook_delivery_service_spec.rb │ └── spec_helper.rb ├── tmp/ │ └── .keep └── vendor/ └── assets/ ├── javascripts/ │ └── .keep └── stylesheets/ └── .keep