cznic/public/: fred-messenger-0.5.4 metadata and description

Simple index Newer version available

Fred-messenger is a service for sending and archiving various types of messages.

author Vlastimil Zíma
author_email vlastimil.zima@nic.cz
classifiers
  • Development Status :: 2 - Pre-Alpha
  • Environment :: No Input/Output (Daemon)
  • Intended Audience :: Information Technology
  • License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
  • Operating System :: OS Independent
  • Programming Language :: Python
  • Programming Language :: Python :: 3.7
  • Programming Language :: Python :: 3.8
  • Programming Language :: Python :: 3.9
  • Programming Language :: Python :: 3.10
  • Topic :: Communications
  • Topic :: Communications :: Email
  • Topic :: Internet
  • Topic :: Office/Business
  • Typing :: Typed
license GPLv3+
provides_extras sentry
requires_dist
  • alembic (~=1.5)
  • click (>=7.1)
  • cryptography (>=3.2)
  • imap-tools (>=0.47.0)
  • phonenumbers
  • protobuf (>=3.7)
  • pydantic (~=1.7)
  • python-dateutil
  • pytz
  • PyYAML
  • SQLAlchemy (~=1.4)
  • SQLAlchemy-Utc
  • SQLAlchemy-Utils
  • typing-extensions
  • fred-filed
  • fred-api-messenger (==1.3.*)
  • frgal (~=3.5)
  • typist (~=0.5)
  • alembic-autogen-check ; extra == 'quality'
  • bandit ; extra == 'quality'
  • doc8 ; extra == 'quality'
  • flake8 ; extra == 'quality'
  • isort ; extra == 'quality'
  • mypy ; extra == 'quality'
  • pydocstyle ; extra == 'quality'
  • grpcio-reflection ; extra == 'reflection'
  • sentry-sdk ; extra == 'sentry'
  • freezegun ; extra == 'test'
  • testfixtures ; extra == 'test'
  • types-freezegun ; extra == 'types'
  • types-protobuf ; extra == 'types'
  • types-python-dateutil ; extra == 'types'
  • types-pytz ; extra == 'types'
  • types-PyYAML ; extra == 'types'
requires_python ~=3.7

Because this project isn't in the mirror_whitelist, no releases from root/pypi are included.

File Tox results History
fred-messenger-0.5.4.tar.gz
Size
125 KB
Type
Source
fred_messenger-0.5.4-py3-none-any.whl
Size
165 KB
Type
Python Wheel
Python
3

Fred-messenger is a service for sending and archiving various types of messages.

Learn more about the project and our community on the FRED’s home page

Configuration

Messenger searches for configuration files in following order:

  1. Configuration file set by MESSENGER_CONFIG environment variable.

  2. Configuration file set by --config option of a command.

  3. ~/.fred/messenger.conf

  4. /etc/fred/messenger.conf

The configuration file is in YAML format with following options:

clean_days

Lifetime of an message that is not to be archived in days. Applies to messages with archive flag disabled or error messages. Default is 30 days.

db_connection

A connection string to database. See https://docs.sqlalchemy.org/core/engines.html#database-urls for possible values. Default is sqlite:///:memory:.

db_echo

Whether to log SQL statements. Default is False.

delivery_backend

Dotted path to a backend used for processing e-mail message delivery. Default is messenger.delivery.email.ImapDelivery.

delivery_options

Dictionary with options for the delivery backend. Default is empty.

fileman_netloc

Network location, i.e. host and port, of a fileman service. Default is None, i.e. fileman disabled. Emails with attachments will not be send.

fred_db_connection

A connection string to FRED database for mail archive migration. See https://docs.sqlalchemy.org/core/engines.html#database-urls for possible values. Default is None, which causes error when running migration.

logging

Logging configuration, see https://docs.python.org/3.8/library/logging.config.html for possible values. Default is None, i.e. use logging defaults.

grpc_max_workers

The maximum number of workers for gRPC server, see https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.ThreadPoolExecutor. Default is None, i.e. use Python library default.

grpc_maximum_concurrent_rpcs

The maximum number of concurrent RPCs this server will service, see http://grpc.github.io/grpc/python/grpc.html#grpc.server. Default is None, i.e. no limit.

grpc_options

Custom options for a gRPC server. Valid value is a list of key-value pairs. Default is None, i.e. use gRPC defaults.

grpc_port

Port to which the messenger gRPC service will bind and listen. Default is 50051.

monitoring_email

An email address which is excluded from migrations of emails in migrate_archive command. Default is None, i.e. migrate all emails.

msgid_domain

Domain portion of generated Message-ID. Default is None, i.e. the local hostname.

processors

Default is empty.

Definition of message processors in a complex structure. The setting maps transport method to a list of processor settings. Each processor setting has to define class with dotted path to a processor class used and optionally keyword arguments for the processor. Example:

processors:
    email:
        - class: messenger.processors.VcardEmailProcessor
          data: "VCARD_DATA"

By default, no processors are defined.

senders

Definition of message senders in a complex structure. The highest level maps transport method to senders. Medium level maps sender alias to its settings. Inner level contains a backend settings:

  • backend contains dotted path to a backend. This setting is required.

  • filters contain a filter settings, see below.

  • options contains mapping of backend specific options.

Example:

senders:
    smtp:
        backend: messenger.backends.email.SmtpBackend
        options:
            host: red-dwarf.example.org
            default_from: holly@example.org

By default, no senders are defined.

filters

A setting of filters as a list of filter settings. Each filter setting has to define class with dotted path to a filter class used and optionally keyword arguments for the filter. Example:

filters:
    - class: red.dwarf.IgnoreFilter
      ignore: Rimmer

By default, no filters are defined.

sentry

Sentry settings in a nested structure. May contain following keys:

test_db_connection

A connection string to database to be used in tests. See https://docs.sqlalchemy.org/core/engines.html#database-urls for possible values. Default is sqlite:///:memory:.

ChangeLog

0.5.4 (2023-02-08)

  • Fix emails with multiple recipients (#87).

  • Fix signatures on multipart alternative emails (#88).

  • Fix bugs in send-message script.

0.5.3 (2023-01-26)

  • Prevent sending one message multiple times (#84).

  • Fix email To header (#85).

  • Fix typing and flake8.

0.5.2 (2022-07-25)

  • Always convert DSN values to string (#79).

0.5.1 (2022-06-28)

  • Optimize email search in delivery (#76).

0.5.0 (2022-06-20)

  • Replace EasySettings with pydantic (#33).

  • Use API 1.3 (#70).

  • Add a folder option to email delivery (#57).

  • Fix delivery for rfc822 MIME type (#60).

  • Skip autosubmitted emails in delivery processing (#62).

  • Add an option to skip delivered emails (#63).

  • Improve delivery processing (#42, #75).

  • Switch reference types (#69, #72).

  • Add Result utility (#58).

  • Add an option to disable certificate verification (#59).

  • Add secretary token (#64).

  • Add sender specific processors (#66).

  • Add email headers processor (#65).

  • Add options for server limits (#48).

  • Fix SQLAlchemy 2.0 deprecation warnings (#68).

  • Mark ScalarListType cacheable (#71).

  • Resolve frgal warnings (#74).

  • Flush objects at the end of session in tests (#30).

  • Update project setup.

0.4.0 (2022-04-06)

  • Switch to API 1.2 (#50).

  • Add multi_send to email servicer (#51).

  • Add batch send to email servicer (#53).

  • Add a resend script.

0.3.1 (2022-03-28)

  • Set MIME-Version header on S/MIME emails (#49).

0.3.0 (2022-03-03)

  • Use new UID format (#43).

  • Refactor S/MIME signatures to use cryptography (#31).

  • Shorten a length of an Email string representation (#14).

  • Log summaries of operations (#10).

  • Add script to send a message.

  • Add test utils for commands (#24).

  • Fix manual page for archive (#28).

  • Increase coverage.

  • Make mypy more strict and fix annotations.

  • Update project setup.

  • Add issue template.

0.2.2 (2022-02-23)

  • Send messages using round-robin by type (#32).

  • Expect non-multipart email in delivery (#36).

  • Expect headers of undelivered message (#37).

  • Handle exceptions in delivery processing (#38).

0.2.1 (2022-01-20)

  • Delete references on clean (#29).

0.2.0 (2022-01-12)

  • Add support for python 3.10.

  • Drop support for python 3.6.

  • Drop support for SQLAlchemy 1.3 (#7). * Replace deprecated has_table method.

  • Fix comments on address country (#2).

  • Drop SmsMessage.msisdn (#5).

  • Fix section of man pages (#12).

  • Add gRPC reflection (#1).

  • Enable multiple --type options (#19).

  • Support undelivered messages in backends (#21).

  • Fail on defect in recipient’s email address (#23).

  • Add --from and --to to archive command (#22).

  • Add --format to monitor command (#25).

  • Rename load_instance args (#26).

  • Rename type to method in code (#27).

  • Update static checks.

0.1.0 (2021-12-13)

Initial version.

  • Support emails, SMS and letters.

  • Include message archive.

  • Include migration of FRED message archives.

  • Support blocked addresses.

  • Provides email senders and delivery checks.

  • SMS and letter senders are supported, but no particular backends are implemented.