Qpsmtpd

Qpsmtpd是一个可扩展的SMTP引擎,用Perl编写。(Qpsmtpd is an extensible SMTP engine written in Perl. )

  • 所有者: smtpd/qpsmtpd
  • 平台:
  • 許可證: MIT License
  • 分類:
  • 主題:
  • 喜歡:
    0
      比較:

Github星跟蹤圖

qpsmtpd是一个用Perl编写的灵活的smtpd守护进程。 除了核心的SMTP功能之外,所有功能都使用易于使用的面向对象的插件API在小型“扩展插件”中实现。

qpsmtpd最初写为qmail-smtpd的替换,但现在它还包括smtp forward,postfix,exim和maildir“backends”。

qpsmtpd特性

插件

  • 高级但简单易用的插件系统可轻松安装额外的功能并编写本地规则。
  • 几乎所有功能都在插件中实现
  • 例如:tls(实现STARTTLS),spamassassin,大多数主要防病毒程序的插件,各种AUTH插件(ldap,vpopmail,...),操作系统检测,队列插件(qmail,exim,postfix,Maildir),灰名单, SPF等
  • 插件目录:当前开发库,Peter J. Holzer,Gavin Carr。

MTA兼容性

  • 替换qmail-smtpd的代替
  • Postfix协议模块
  • EXIM-BSMTP
  • SMTP排队插件支持任何符合SMTP的后端
  • 其他“后端”可以使用队列插件轻松实现

反垃圾邮件

  • 创新的垃圾邮件斗争理念可以通过qpsmtpd插件轻松实现和测试。一个成功的例子是check_earlytalker插件(断开大多数病毒和许多垃圾邮件引擎,之后我们甚至打个招呼!)。
  • 支持DNS黑名单,如Spamhaus列表。
  • 支持基于域的黑名单列表。
  • 支持Milter过滤器(是的,那些为sendmail编写的)与更轻的插件
  • 与Gavin Carr的denysoft_greylist插件进行灰名单
  • DomainKeys支持使用domainkeys插件
  • 对SpamAssassin的集成支持
  • 用ClamAV进行病毒扫描
  • 好多其它的 ...

为了更好的性能,官方建议使用“qpsmtpd-forkserver”或在Apache 2.x下运行qpsmtpd。 如果您需要极高的并发性请使用Haraka。

概覽

名稱與所有者smtpd/qpsmtpd
主編程語言Perl
編程語言Perl (語言數: 3)
平台
許可證MIT License
發布數33
最新版本名稱v1.0.0 (發布於 )
第一版名稱v0.01-tar (發布於 2001-10-29 18:04:56)
創建於2009-02-08 23:05:59
推送於2024-04-17 18:14:54
最后一次提交2024-04-05 14:29:13
星數136
關注者數27
派生數74
提交數2.4k
已啟用問題?
問題數75
打開的問題數11
拉請求數197
打開的拉請求數5
關閉的拉請求數46
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?

Build Status
Coverage Status

Qpsmtpd - qmail perl simple mail transfer protocol daemon

Web site, FAQ, Email List

Qpsmtpd is an extensible SMTP engine written in Perl. See plugins/quit_fortune for a cute example.

License

Qpsmtpd is licensed under the MIT License; see the LICENSE file for
more information.

What's new?

See the Changes file! :-)

Installation

Required Perl Modules

* Net::DNS
* MIME::Base64
* Mail::Header (part of the MailTools distribution)

If your Perl is older than 5.8.0, you will also need

* Data::Dumper
* File::Temp
* Time::HiRes

The easiest way to install modules from CPAN is with the CPAN shell.
Run it with

perl -MCPAN -e shell

qpsmtpd installation

Make a new user and a directory where you'll install qpsmtpd. I
usually use "smtpd" for the user and /home/smtpd/qpsmtpd/ for the
directory.

Put the files there. If you install from git you can just do
run the following command in the /home/smtpd/ directory.

git clone git://github.com/smtpd/qpsmtpd.git

Beware that the master branch might be unstable and unsuitable for anything
but development, so you might want to get a specific release, for
example (after running git clone):

git checkout -b local_branch v0.93

chmod o+t ~smtpd/qpsmtpd/ (or whatever directory you installed qpsmtpd
in) to make supervise start the log process.

Edit the file config/IP and put the ip address you want to use for
qpsmtpd on the first line (or use 0 to bind to all interfaces).

If you use the supervise tools, then you are practically done!
Just symlink /home/smtpd/qpsmtpd into your /services (or /var/services
or /var/svscan or whatever) directory. Remember to shutdown
qmail-smtpd if you are replacing it with qpsmtpd.

If you don't use supervise, then you need to run the ./run script in
some other way.

The smtpd user needs write access to ~smtpd/qpsmtpd/tmp/ but should
not need to write anywhere else. This directory can be configured
with the spool_dir configuration and permissions can be set with
spool_perms.

As of version 0.25 the distributed ./run script runs tcpserver with
the -R flag to disable identd lookups. Remove the -R flag if that's
not what you want.

Configuration

Configuration files can go into either /var/qmail/control or into the
config subdirectory of the qpsmtpd installation. Configuration should
be compatible with qmail-smtpd making qpsmtpd a drop-in replacement.

If qmail is installed in a nonstandard location you should set the
$QMAIL environment variable to that location in your "./run" file.

If there is anything missing, then please send a patch (or just
information about what's missing) to the mailinglist or a PR to github.

Better Performance

For better performance we recommend using "qpsmtpd-forkserver" or
running qpsmtpd under Apache 2.x. If you need extremely high
concurrency use Haraka.

Plugins

The qpsmtpd core only implements the SMTP protocol. No useful
function can be done by qpsmtpd without loading plugins.

Plugins are loaded on startup where each of them register their
interest in various "hooks" provided by the qpsmtpd core engine.

At least one plugin MUST allow or deny the RCPT command to enable
receiving mail. The rcpt_ok is one basic plugin that does
this. Other plugins provide extra functionality related to this; for
example the resolvable_fromhost plugin described above.

Configuration files

All the files used by qmail-smtpd should be supported; so see the man
page for qmail-smtpd. Extra files used by qpsmtpd include:

plugins

List of plugins, one per line, to be loaded in the order they
appear in the file. Plugins are in the plugins directory (or in
a subdirectory of there).

rhsbl_zones

Right hand side blocking lists, one per line. For example:

dsn.rfc-ignorant.org does not accept bounces - http://www.rfc-ignorant.org/

See http://www.rfc-ignorant.org/ for more examples.

dnsbl_zones

Normal ip based DNS blocking lists ("RBLs"). For example:

relays.ordb.org
spamsources.fabel.dk

spool_dir

If this file contains a directory, it will be the spool directory
smtpd uses during the data transactions. If this file doesn't exist, it
will default to use $ENV{HOME}/tmp/. This directory should be set with
a mode of 700 and owned by the smtpd user.

spool_perms

The default spool permissions are 0700. If you need some other value,
chmod the directory and set it's octal value in config/spool_perms.

tls_before_auth

If this file contains anything except a 0 on the first noncomment line, then
AUTH will not be offered unless TLS/SSL are in place, either with STARTTLS,
or SMTP-SSL on port 465.

everything (?) that qmail-smtpd supports.

In my test qpsmtpd installation I have a "config/me" file containing
the hostname I use for testing qpsmtpd (so it doesn't introduce itself
with the normal name of the server).

Problems

In case of problems, always check the logfile first.

By default, qpsmtpd logs to log/main/current. Qpsmtpd can log a lot of
debug information. You can get more or less by adjusting the number in
config/loglevel. Between 1 and 3 should give you a little. Setting it
to 10 or higher will get lots of information in the logs.

If the logfile doesn't give away the problem, then post to the
mailinglist (subscription instructions above). If possible, put
the logfile on a webserver and include a reference to it in the mail.

去到頂部