{"id":16854644,"url":"https://github.com/philpennock/sieve-connect","last_synced_at":"2025-03-22T06:31:02.577Z","repository":{"id":8166960,"uuid":"9589392","full_name":"philpennock/sieve-connect","owner":"philpennock","description":"A client for the MANAGESIEVE Protocol","archived":false,"fork":false,"pushed_at":"2022-01-26T06:30:07.000Z","size":199,"stargazers_count":79,"open_issues_count":1,"forks_count":6,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-03-18T08:53:29.724Z","etag":null,"topics":["gssapi","managesieve","perl","sasl","sieve","tls"],"latest_commit_sha":null,"homepage":null,"language":"Perl","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/philpennock.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2013-04-22T02:32:08.000Z","updated_at":"2025-02-22T20:34:26.000Z","dependencies_parsed_at":"2022-09-14T13:40:43.595Z","dependency_job_id":null,"html_url":"https://github.com/philpennock/sieve-connect","commit_stats":null,"previous_names":[],"tags_count":33,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philpennock%2Fsieve-connect","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philpennock%2Fsieve-connect/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philpennock%2Fsieve-connect/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philpennock%2Fsieve-connect/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/philpennock","download_url":"https://codeload.github.com/philpennock/sieve-connect/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244918500,"owners_count":20531682,"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":["gssapi","managesieve","perl","sasl","sieve","tls"],"created_at":"2024-10-13T13:56:13.689Z","updated_at":"2025-03-22T06:31:02.159Z","avatar_url":"https://github.com/philpennock.png","language":"Perl","funding_links":[],"categories":[],"sub_categories":[],"readme":"sieve-connect\n=============\n\n[![FreeBSD](https://img.shields.io/badge/distros-freebsd-8c0707.svg)](https://www.freshports.org/mail/sieve-connect)\n[![Debian](https://img.shields.io/badge/distros-debian-c70036.svg)](https://buildd.debian.org/status/package.php?p=sieve-connect\u0026suite=buster)\n[![Ubuntu](https://img.shields.io/badge/distros-ubuntu-db4923.svg)](https://launchpad.net/ubuntu/bionic/+package/sieve-connect)\n[![Gentoo](https://img.shields.io/badge/distros-gentoo-4e4371.svg)](https://packages.gentoo.org/packages/mail-filter/sieve-connect)\n[![Arch Linux](https://img.shields.io/badge/distros-archlinux-1792d0.svg)](https://aur.archlinux.org/packages/sieve-connect)\n\u003ca href=\"https://repology.org/project/sieve-connect/versions\"\u003e\n    \u003cimg src=\"https://repology.org/badge/vertical-allrepos/sieve-connect.svg\" alt=\"Packaging status\" align=\"right\"\u003e\n\u003c/a\u003e\n\nThis is sieve-connect.  A client for the ManageSieve protocol, as\nspecifed in RFC 5804.  Historically, this was MANAGESIEVE as implemented\nby timsieved in Cyrus IMAP.  This software is licensed and the terms are\nprovided in the file \"LICENSE\" as supplied with this software (BSD\n3-clause license).\n\nSIEVE is an RFC-specified language for mail filtering, which at time of\nwriting is specified in a list of RFCs at the end of this document, plus\nvarious drafts, both IETF and individual submissions.  It's designed\nto be regular enough for machines to be able to manipulate, whilst still\nbeing editable by humans.  Alas, not many clients actually implement\nthis instead of embedding their own internal codes in sieve comments,\ndefeating the goal of being able to edit with a client of your choice.\n\nThis is not yet fully compatible with RFC 5804, but is moving towards\nthat from the timsieved baseline; some issues to be worked on are\ndocumented in the \"TODO\" file.\n\nsieve-connect speaks ManageSieve and supports TLS for connection privacy\nand also authentication if using client certificates.  sieve-connect\nwill use SASL authentication; SASL integrity layers are not supported,\nuse TLS instead.  GSSAPI-based authentication should generally work,\nprovided that client and server can use a common underlaying protocol.\nIf it doesn't work for you, please report the issue.\n\nsieve-connect is designed to be both a tool which can be invoked from\nscripts and also a decent interactive client.  It should also be a\ndrop-in replacement for \"sieveshell\", as supplied with Cyrus IMAP.\n\n\nNew Versions\n------------\n\nThere is an announcement-only mailing-list for new releases.  The list\nis \u003csieve-connect-announce@spodhuis.org\u003e and you can subscribe via one of:\n * \u003chttp://mail.globnix.net/mailman/listinfo/sieve-connect-announce\u003e\n * \u003cmailto:sieve-connect-announce-request@spodhuis.org?subject=subscribe\u003e\n\nOfficial announcements should be PGP-signed (by a key in the strong set).\n\n\nInstalling\n----------\n\nYou'll need Perl5 installed and various Perl modules from CPAN, as\ndetailed below.  None of the mandatory modules are unusual.  A man-page is\nprovided.\n\nSSL certificates are assumed to be in /etc/ssl/certs/ but this is\nconfigured at the very start of the script.\n\n\n### MacOS\n\nFor MacOS, a Homebrew Tap is provided; run:\n\n```console\n  $ sudo cpan -i Mozilla::PublicSuffix\n  $ brew tap philpennock/protocols\n  $ brew options sieve-connect\n  $ brew install sieve-connect\n```\n\nNote that by default, GSSAPI is disabled (see Problems below) and readline can\noptionally be disabled.  At time of writing, a `:recommended` `:perl`\ndependency appears to be a hard requirement, not merely recommended, thus the\nneed to manually install `Mozilla::PublicSuffix`.\n\n\nPre-Requisites\n--------------\n\n * `Perl5`\n * `Authen::SASL`\n * `IO::Socket::INET6`\n * `IO::Socket::SSL`         1.14 or greater\n * `Mozilla::PublicSuffix`   optional; automatic server location\n * `Net::DNS`\n * `Pod::Usage`\n * `Term::ReadKey`           optional; password prompting without echo\n * `Term::ReadLine`          optional; improves interactive mode\n * `Term::ReadLine::Gnu`     optional; adds tab-completion\n * various other Perl modules which are shipped with Perl itself\n\n\nProblems\n--------\n\nIf Perl segfaults upon exit, then this is very probably a Perl/Readline\ninteraction.  You can confirm this by using an option such as --list to\navoid entering a command-loop, and then by passing `PERL_RL=Perl` in the\nenvironment to sieve-connect.  Eg:\n\n```console\n  $ env PERL_RL=Perl sieve-connect\n```\n\nIf that avoids the failure on exit, then you appear to be affected by:\n  \u003chttp://rt.cpan.org/Public/Bug/Display.html?id=37194\u003e\n\nRather than rebuild Perl with `-DPERL_USE_SAFE_PUTENV`, when this affected me I\nchose to avoid having readline mess with `$LINES`/`$COLUMNS` and just edited\n`readline-$VER/terminal.c` to disable the call to `sh_set_lines_and_columns()`.\n\n  \n\nOn some platforms, bad interactions between the `Authen::SASL::Perl` module's\nGSSAPI support and the platform GSSAPI libraries have been observed to cause\nPerl to segfault during authentication.  If you observe this and fixing your\nlibraries is not an option, take a look at the `%blacklist_auth_mechanisms`\ndefinition in the user-editable part of the script and force-disable the\nmechanism which has broken platform Perl support.\n\nThe root-cause issue is that the `perlgssapi-code` repo, and the `GSSAPI`\nmodule, is unmaintained with bug fixes from their mailing-list not having been\napplied for several years.  The project appears defunct and I'm not aware of a\nbetter alternative for Perl.  Details can be found at\n\u003chttps://sourceforge.net/p/perlgssapi/mailman/perlgssapi-developer\u003e and I run\nwith a locally-patched module.  The core of the fix is to avoid calling\n`gss_release_oid()` on a bunch of additional static values.\nI've published my existing workaround patch at\n\u003chttps://gist.github.com/philpennock/3f24e00cd7f3e1cb6b11974ff0eb8d47\u003e in case\nit helps anyone else.\n\n  \n\nIf you experience any other problems, or have better solutions to the above,\nplease report them.\n\n\nNotes about release and packaging\n---------------------------------\n\nThe first release of the X.YY tarball corresponds to version 114 in the\nold svn repository, where this was just one script amongst others.\n\nPlease excuse the 'XXX' for user identifier in the ChangeLog -- I'm\nkeeping my email address slightly less spam-harvestable (GSSAPI\nauthentication to svn/DAV leaves your entire user identifier in the\nlogs, which includes the realm).  There's an email address in the\nman-page, which might be excessively spam-filtered, and other email\naddresses in the PGP key used for signing the distribution.\n\nThe PGP key used for signing is in the strong set, so if you can't\nverify the key then attend a PGP keysigning party.  It's where all the,\nuhm, uncool people are.  No, wait wait!  The _cool_ people.  That's it.\nYeah.  *cough*\n\nUp to (and including) v0.85, the release version was just the number of the\nsvn commit, so there would be gaps in release numbers.  After that release,\nthe source moved to Git for revision control, and release numbers are\nsequential, with gaps for major occurances (such as a v1.0, one day).\n\n\nRevision Control\n----------------\n\nsieve-connect uses Git for revision control.  The public-facing canonical repo\nis currently GitHub, with the authoritative repository being:\n\n \u003chttps://github.com/philpennock/sieve-connect\u003e\n\nPull-requests, etc, are accepted there.\n\nNote that GitHub's \"Releases\" feature does not provide the same tarballs as are\ndistributed.  The \"real\" tarballs are prepared with `make dist`, which\ngenerates a tarball and a PGP detached armored signature file.\n\nThe `make tarball` step depends upon Git metadata to prepare the ChangeLog file\nand get the release date and version; those are put into the file (so that\n`sieve-connect --version` reports a real version) and into the manual-page.\n\nIf you clone the git repository in full, *not* work from the releases offered\nby GitHub, you should be able to use `make tarball` to prepare the same tarball\nI release, and audit/compare them.\n\n\nRFCs\n----\n\nFor this tool:\n\n * RFC 5804 A Protocol for Remotely Managing Sieve Scripts\n\nFor the scripts this tool moves around:\n\n * RFC 5228 Sieve: An Email Filtering Language\n * RFC 5229 Sieve Email Filtering: Variables Extension\n   * RFC 5173 Sieve Email Filtering: Body Extension\n * RFC 5230 Sieve Email Filtering: Vacation Extension\n * RFC 5231 Sieve Email Filtering: Relational Extension\n * RFC 5232 Sieve Email Filtering: Imap4flags Extension\n * RFC 5233 Sieve Email Filtering: Subaddress Extension\n * RFC 5235 Sieve Email Filtering: Spamtest and Virustest Extensions\n * RFC 3894 Sieve Extension: Copying Without Side Effects\n * RFC 5183 Sieve Email Filtering: Environment Extension\n * RFC 5260 Sieve Email Filtering: Date and Index Extensions\n * RFC 5293 Sieve Email Filtering: Editheader Extension\n * RFC 5435 Sieve Email Filtering: Extension for Notifications\n   * RFC 5436 Sieve Notification Mechanism: mailto\n   * RFC 5437 Sieve Notification Mechanism: Extensible Messaging and Presence Protocol (XMPP)\n * RFC 5463 Sieve Email Filtering:  Ihave Extension\n * RFC 5429 Sieve Email Filtering: Reject and Extended Reject Extensions\n * RFC 5490 The Sieve Mail-Filtering Language -- Extensions for Checking Mailbox Status and Accessing Mailbox Metadata\n * RFC 5703 Sieve Email Filtering: MIME Part Tests, Iteration, Extraction, Replacement, and Enclosure\n * RFC 5784 Sieve Email Filtering:  Sieves and Display Directives in XML\n\n(End of README)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphilpennock%2Fsieve-connect","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphilpennock%2Fsieve-connect","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphilpennock%2Fsieve-connect/lists"}