{"id":17872999,"url":"https://github.com/madroach/minimalist","last_synced_at":"2026-03-07T03:31:08.549Z","repository":{"id":146775083,"uuid":"4572229","full_name":"madroach/minimalist","owner":"madroach","description":"minimalist mailing list manager","archived":false,"fork":false,"pushed_at":"2023-10-23T02:02:35.000Z","size":84,"stargazers_count":16,"open_issues_count":5,"forks_count":5,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-12-27T14:32:14.500Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Perl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/madroach.png","metadata":{"files":{"readme":"README","changelog":"CHANGES","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2012-06-06T12:26:27.000Z","updated_at":"2025-11-27T16:46:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"5e787970-8c9c-4f84-91f9-78f041495ded","html_url":"https://github.com/madroach/minimalist","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/madroach/minimalist","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madroach%2Fminimalist","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madroach%2Fminimalist/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madroach%2Fminimalist/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madroach%2Fminimalist/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/madroach","download_url":"https://codeload.github.com/madroach/minimalist/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madroach%2Fminimalist/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30206563,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T03:24:23.086Z","status":"ssl_error","status_checked_at":"2026-03-07T03:23:11.444Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-28T10:53:58.426Z","updated_at":"2026-03-07T03:31:08.525Z","avatar_url":"https://github.com/madroach.png","language":"Perl","funding_links":[],"categories":[],"sub_categories":[],"readme":"=========================== Minimalist =============================\n\nI. Common information\n\nMinimalist is a MINImalist MAiling LIST manager. It is fast, extremely easy \nto setup and support. It is written in Perl and tested on OpenBSD/OpenSMTPd.\nHowever there are no causes not to use Minimalist on any other Unix system,\nbecause it doesn't use any system-dependent features.\n\nMinimalist has these features:\n\n . subscribe/unsubscribe users by request\n    * including write-only option of subscription\n . read-only/closed/mandatory lists\n . information about list; users, subscribed to list; lists, to which user\n    subscribed\n . per-user options:\n    * read-only (for open lists)\n    * write allow (for read-only lists))\n    * maximum message size\n . susped/resume subscription\n . archiving lists (internal and external), with maximum size of archived\n    message\n . multilanguage support\n . process MIME-encoded messages\n    * including support for local charset (for reports and footer)\n . hook for bounce processing (using VERP - Variable Envelope Return-Path)\n . external delivery of processed message\n . blacklist\n . logging activity\n\nMinimalist has a notion of 'administrators' (global and per-list). They\nhave full rights to manipulate subscription of other users and get any\ninformation, related to lists and users.\n\nBasic language of Minimalist is English, additional translations can be found\neither in distribution (in directory translations/) or on Web, at\nhttps://github.com/madroach/minimalist/tree/master/translations.\nNew translations can easily be created using an existing translation as\ntemplate. See alse perl Maketext: http://perldoc.perl.org/Locale/Maketext.html\n\nCommands may be either in subject of message (one command per message)\nor in body (one or more commands, one per line). Batched processing starts\nwhen subject either empty or contains command 'body' (without quotes) and\nstops when either arrives command 'stop' or 'exit' (without quotes) or\ngets 10 incorrect commands.\n\nSupported commands are:\n\nsubscribe \u003clist\u003e [\u003cemail\u003e] :\n    Subscribe user to \u003clist\u003e. If \u003clist\u003e contains suffix '-writers', user\n    will be able to write to this \u003clist\u003e, but will not receive messages\n    from it.\n\nunsubscribe \u003clist\u003e [\u003cemail\u003e] :\n    Unsubscribe user from \u003clist\u003e. Can be used with suffix '-writers' (see\n    above description for subscribe)\n\nauth \u003ccode\u003e :\n    Confirm command, used in response to subscription requests in some cases.\n    This command isn't standalone, it must be used only in response to a\n    request by Minimalist.\n\nmode \u003clist\u003e \u003cemail\u003e \u003cmode\u003e :\n    Set mode for specified user on specified list. Allowed only for\n    administrator. Mode can be (without quotes):\n      * 'reader' - read-only access to the list for the user;\n      * 'writer' - user can post messages to the list regardless of list's\n                   status\n      * 'usual' -  clear any two above mentioned modes\n      * 'suspend' - suspend user subscription\n      * 'resume' - resume previously suspended permission\n      * 'maxsize \u003csize\u003e' - set maximum size (in bytes) of messages, which\n                           user wants to receive\n      * 'reset' - clear all modes for specified user\n\nsuspend \u003clist\u003e :\n    (obsolete) Stop receiving of messages from specified mailing list\n\nresume \u003clist\u003e :\n    (obsolete) Restore receiving of messages from specified mailing list\n\nmaxsize \u003clist\u003e \u003csize\u003e :\n    (obsolete) Set maximum size (in bytes) of messages, which user wants to receive\n\nwhich [\u003cemail\u003e] :\n    Return list of lists to which user is subscribed\n\ninfo [\u003clist\u003e] :\n    Request information about all existing lists or about \u003clist\u003e\n\nwho \u003clist\u003e :\n    Return the list of users subscribed to \u003clist\u003e\n\nhelp :\n    Return list of supported commands with brief description about every\n    command\n\nNote, that commands with \u003cemail\u003e, 'who' and 'mode' can only be used by\nadministrators (users identified in the 'mailfrom' authentication scheme or\nwho used a correct password - either global or local). Otherwise command will\nbe ignored. Password must be supplied in any header of message as fragment\nof the header in the following format:\n\n{pwd: list_password}\n\nFor example:\n\nTo: MML Discussion {pwd: password1235} \u003cmml-general\\@kiev.sovam.com\u003e\n\nThis fragment, of course, will be removed from the header before sending\nmessage to subscribers.\n\n----------------------------------------------------------------------------\nII. Install\n\nTo install, place minimalist.pl somewhere (in /usr/local/sbin for example).\nThis path must be accessible for MTA and minimalist.pl must be executable\nby your MTA. It is recommended to set the script suid root. Minimalist will \nthen chroot and then drop privileges to the user set in the config file or to \nits real uid.\n\nThen copy minimalist.conf to /etc/minimalist.conf. If you wish to have it in\ndifferent location, you will use '-c' command-line directive, followed by full\npath and name of file, where appropriate config located (for example:\nminimalist.pl -c /etc/minimalist.conf ). Set variables in config accordingly to\nyour needs (defaults are useful in most cases).\n\nThe next step is to create alias for minimalist, which pipes received\nmessage to the program. The often place of aliases file is /etc/aliases.\nAdd this line at the end of file:\n\nminimalist:\t\t|/usr/local/sbin/minimalist.pl\n(if your MTA adds a delivered-to: header)\n\nor if it doesn't:\n\nminimalist:\t\t\"|/usr/local/sbin/minimalist.pl minimalist\"\n\nand, if your MTA requires, do all it need to actualize changes.\n\nAfter this you must create a directory which Minimalist will use for work.\nIt is defined in the minimalist.conf by directive 'directory'. In this  \ndirectory you need at least \"lists\" and \"auth\" subdirectorys. Optionally you \ncan create a \"translations\" subdirectory where you can put perl Maketext \ntranslation files. Of course all directories need to be readable by \nminimalist. The auth directory must also be writable.\n\n----------------------------------------------------------------------------\nIII. Creating lists\n\n1. In the \"lists\" directory, create a directory, named exactly as the\nlist you are creating. In this directory minimalist probably needs write \naccess to files \"list\", \"list-writers\" and maybe the directory \"archive\".\n\n2. Create in the list's directory some files:\n     An example can be found in the distributions\n     \"lists/minimalist-example\" directory.\n\n a) config\n     Private settings for this list, they override global parameters.\n\n b) info\n     Common information about list, used when user subscribes to the list\n     and requests information about list.\n\n c) footer\n     This file will be appended to any message, passed through list. There\n     are few ways in which footer can be added to message:\n\n      * if message is not encoded (i.e. if it's 7bit or 8bit), message's\n\tcharset is the same as list's charset or list's charset is default\n\t(us-ascii) and footer doesn't contain any predefined MIME-headers\n\t(see below), then footer will be simply added to the end of the\n\tincoming message.\n\n      * else entire message will be converted to MIME-format and footer\n\twill be added as separate entity, with his own charset (from\n\tconfiguration or from predefined headers).\n\n      * if message is already MIME-encoded, then footer will be added as\n        separate entity, accordingly to structure of incoming message.\n\n     It means, that footer will always be visible regardless of attachments\n     in message or encoding of message or charset, used in message.\n\n     If you want to define your own headers, start footer with string\n     '*hdr: ' (without quotes), followed by headers. Body of footer must be\n     separated from header with empty line, for example:\n\n     +--------------------------------------------------------\n     |*hdr: Content-Type: text/html; charset=koi8-r\n     |Content-Transfer-Encoding: 8bit\n     |\n     |\u003chtml\u003e\n     |... rest body of header ...\n     |\u003c/html\u003e\n     +--------------------------------------------------------\n\n     It gives ability to use in footer whatever you want, from HTML code,\n     which has references to some other resources, to animated GIFs or\n     Flash programs.\n\n     There are some useful macros can be used in 'info' and 'footer' files:\n\n      \\a\twill be expanded to administrator's email\n      \\d\twill be expanded to \u003cdomain\u003e\n      \\l\twill be expanded to \u003clist\u003e\n      \\o\twill be expanded to \u003clist\u003e-owner@\u003cdomain\u003e\n\n4. Add list's aliases to /etc/aliases file:\n\nminimalist-example:\t\t|/usr/local/sbin/minimalist.pl\nminimalist-example-owner:\tuser@somewhere\n(if your MTA adds a delivered-to: header)\n\nor if it doesn't:\n\nminimalist-example:\t\t\"|/usr/local/sbin/minimalist.pl list\"\nminimalist-example-owner:\tuser@somewhere\n\nIf you are using VERP for bounce processing (see minimalist.conf for\ninformation about directive 'verp'), you must add one more alias, something\nlike to:\n\nminimalist-example-owner-*:\t|/path/to/bounce_processing_tool.pl\n\nWildcard mask specifies, that any message, where recipient's address starts\non 'list-owner-', will be passed to bounce_processing_tool.pl. Check your\nMTA documentation on how to create wildcard aliases.\n\nDistribution of Minimalist does not provide bounce processing program for\nnow. You should use any third-party program.\n\n----------------------------------------------------------------------------\nIV. Check configuration\n\nYou always can check your configuration with:\n\n minimalist.pl - [listname [listname ... ]]\n \nwhere 'listname' is existing list's name.  If there are errors in they will\nbe reported. It is recommended always check configuration after any\nchanges either in global configuration file or in list's config.\n\n----------------------------------------------------------------------------\nV. Security\n\nInformation on how to get administrative privileges may be stored in global\nand private configs. You must set owner and permissions of this configs to\nallow minimalist to access these configs, but disallow access for unprivileged \nusers.\nIf run setuid root, minimalist will read the main configuration before \nchrooting, so you may set more restrictive permissions on that file.\n\n----------------------------------------------------------------------------\nVI. Internals\n\nSubscribers are listed in files 'list' and 'list-writers' in list's\ndirectory. Format: e-mail per row. Settings for subscriber are appended to\nhis e-mail through separator '\u003e'. Available values are (without quotes):\n\n'+' - user allowed to write in read only list (mode ... writer)\n'-' - user disallowed to write in list (mode ... reader)\n'!' - suspended user (suspend/resume, mode ... suspend/resume)\n'#ms\u003csize\u003e' - maximum size in bytes of messages for user\n\nArchives are located under list's directory in archive/yyyy./mm./dd./[0-9]*\nin format one file per one message. DON'T DELETE \"SEQUENCE\" file in this\ndirectory - there is a number of a last archived message!\n\nVII. Enjoy :)\n\nThere is mailing list about Minimalist. Please, mail to\n\tminimalist@kiev.sovam.com\nwith subject of 'subscribe mml-general' to subscribe on this list.\n\nVladimir Litovka, \u003cdoka@kiev.sovam.com\u003e\nhttp://www.mml.org.ua/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmadroach%2Fminimalist","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmadroach%2Fminimalist","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmadroach%2Fminimalist/lists"}