{"id":13937075,"url":"https://github.com/zedshaw/lamson","last_synced_at":"2025-04-13T02:11:51.276Z","repository":{"id":46636328,"uuid":"1782227","full_name":"zedshaw/lamson","owner":"zedshaw","description":"Pythonic SMTP Application Server","archived":false,"fork":false,"pushed_at":"2021-10-02T14:26:43.000Z","size":860,"stargazers_count":738,"open_issues_count":22,"forks_count":199,"subscribers_count":68,"default_branch":"master","last_synced_at":"2025-04-04T04:09:49.310Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://lamsonproject.org/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zedshaw.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-05-21T23:38:23.000Z","updated_at":"2025-03-29T00:31:12.000Z","dependencies_parsed_at":"2022-09-23T04:12:32.146Z","dependency_job_id":null,"html_url":"https://github.com/zedshaw/lamson","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zedshaw%2Flamson","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zedshaw%2Flamson/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zedshaw%2Flamson/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zedshaw%2Flamson/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zedshaw","download_url":"https://codeload.github.com/zedshaw/lamson/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248654088,"owners_count":21140236,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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-08-07T23:03:15.524Z","updated_at":"2025-04-13T02:11:51.246Z","avatar_url":"https://github.com/zedshaw.png","language":"Python","readme":"The Lamson Mail Server(TM)\r\n\r\n======================\r\n\r\nLamson is a pure Python SMTP server designed to create robust and complex mail\r\napplications in the style of modern web frameworks such as Django. Unlike\r\ntraditional SMTP servers like Postfix or Sendmail, Lamson has all the features\r\nof a web application stack (ORM, templates, routing, handlers, state machines,\r\nPython) without needing to configure alias files, run newaliases, or\r\njuggle tons of tiny fragile processes. Lamson also plays well with other web\r\nframeworks and Python libraries.\r\n\r\nFeatures\r\n========\r\n\r\nLamson supports running in many contexts for processing mail using the best\r\ntechnology currently available.  Since Lamson is aiming to be a modern SMTP\r\nserver and Mail processing framework, it has some features you don't find in any\r\nother Mail server.\r\n\r\n* Written in portable Python that should run on almost any Unix server.\r\n* Handles mail in almost any encoding and format, including attachments, and\r\ncanonicalizes them for easier processing.\r\n* Sends nearly pristine clean mail that is easier to process by other receiving\r\nservers.\r\n* Properly decodes internationalized mail into Python unicode, and translates\r\nPython unicode back into nice clean ascii and/or UTF-8 mail.\r\n* Lamson can use SQLAlchemy, TokyoCabinet, or any other database abstraction\r\nlayer or technology you can get libraries for.  It supports SQLAlchemy by\r\ndefault.\r\n* It uses Jinja2 by default, but you can swap in Mako if you like, or any other\r\ntemplate framework with a similar API.\r\n* Supports working with Maildir queues to defer work and distribute it to\r\nmultiple machines.\r\n* Can run as an non-root user on port 25 to reduce the risk of intrusion.\r\n* Lamson can also run in a completely separate virtualenv for easy deployment.\r\n* Spam filtering is baked into Lamson using the SpamBayes library.\r\n* A flexible and easy to use routing system lets you write stateful or stateLESS\r\nhandlers of your email.\r\n* Helpful tools for unit testing your email applications with nose, including\r\nspell checking with PyEnchant.\r\n* Ability to use Jinja2 or Mako templates to craft emails including the headers.\r\n* A full alternative to the default optparse library for doing commands easily.\r\n* Easily configurable to use alternative sending and receiving systems, database\r\nlibraries, or any other systems you need to talk to.\r\n* Yet, you don't *have* to configure everything to get stated.  A simple\r\nlamson gen command lets you get an application up and running quick.\r\n* Finally, many helpful commands for general SMTP server debugging and cleaning.\r\n\r\n\r\nInstalling\r\n==========\r\n\r\nIf you want to install Lamson then the best source of information is the\r\ndocumentation available at the site, particularly the following documents:\r\n\r\nhttp://lamsonproject.org/docs/getting_started.html\r\n\r\nhttp://lamsonproject.org/docs/deploying_lamson.html\r\n\r\n\r\nProject Information\r\n===================\r\n\r\nYou can get documentation, track news, watch screencasts (using actual GNU screen)\r\nand other information at:\r\n\r\nhttp://lamsonproject.org/\r\n\r\nSource\r\n-----\r\n\r\nThe source is here http://github.com/zedshaw/lamson so figure it out.\r\n\r\nStatus\r\n------\r\n\r\nLamson is 1.1 right now.\r\n\r\nLicense\r\n----\r\n\r\nLamson is licensed under the license in the https://github.com/zedshaw/lamson/blob/master/LICENSE\r\nfile.  It's a variant of the BSD license that is revokeable and makes contributor's rights\r\nclear up front.\r\n\r\n\r\nContributing\r\n-------\r\n\r\nMost of the features for 1.0 are already being planned, but if you have\r\nsuggestions for improvements or bug fixes then feel free to join the mailing\r\nlists and discuss them:\r\n\r\nhttp://lamsonproject.org/lists/\r\n\r\nThere is also an IRC channel #lamson on irc.freenode.org you can join to chat,\r\nit has low volume and you usually get a fast response.\r\n\r\n\r\nTesting\r\n=======\r\n\r\nThe Lamson project uses unit tests, code reviews, coverage information, source\r\nanalysis, and security reviews to maintain quality.  If you find a bug, please\r\ntake the time to write a test case that fails or provide a piece of mail that\r\ncauses the failure.\r\n\r\nIf you contribute new code then your code should have as much coverage as\r\npossible, with a minimal amount of mocking.\r\n\r\n\r\nSecurity\r\n--------\r\n\r\nLamson follows the same security reporting model that has worked for other open\r\nsource projects:  If you report a security vulnerability, it will be acted on\r\nimmediately and a fix with complete full disclosure will go out to everyone at\r\nthe same time.  It's the job of the people using Lamson to keep track of\r\nsecurity relate problems.\r\n\r\nAdditionally, Lamson is written in as secure a manner as possible and assumes\r\nthat it is operating in a hostile environment.  If you find Lamson doesn't\r\nbehave correctly given that constraint then please voice your concerns.\r\n\r\n\r\n\r\nDevelopment\r\n===========\r\n\r\nLamson is written entirely in Python and runs on Python 2.5 or 2.6 but not 3k\r\nyet.  It uses only pure Python except where some libraries have compiled\r\nextensions (such as Jinja2).  It should hopefully run on any platform that\r\nsupports Python and has Unix semantics.\r\n\r\nThe code is consistently documented and written to be read in an instructional\r\nmanner where possible.  If a piece of code does not make sense, then ask for\r\nhelp and it will be clarified.  The code is also small and has a full test suite\r\nwith about 95% coverage, so you should be able to find out just about anything\r\nyou need to hack on Lamson in the Lamson source.  Particularly you can find\r\nonline API documentation here:\r\n\r\nhttp://lamsonproject.org/docs/api/\r\n\r\nGiven the above statements, it should be possible for anyone to take the Lamson\r\nsource and read through it in an evening or two.  You should also be able to\r\nunderstand what's going on, and learn anything you don't by asking questions.\r\n\r\nIf this isn't the case, then feel free to ask for help understanding it.\r\n\r\n\r\n","funding_links":[],"categories":["Email","资源列表","Python","Awesome Python"],"sub_categories":["电子邮件","Email"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzedshaw%2Flamson","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzedshaw%2Flamson","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzedshaw%2Flamson/lists"}