从sendmail到postfix

20 Mar 2013

之前一直饱受sendmail的苦,这次的任务是测试一个relayhost是否好用,在sendmail中直接定义DSxxx.com。使用这个地址去做relay。结果出现如下错误:

Must issue a STARTTLS command first (in reply to MAIL FROM command)

然后就是在茫茫网海中努力的搜寻sendmail关于TLS的配置。好吧,最后我拜服在了m4的配置以及certificate下。我无法找到一个简单的方法使得当server需要使用TLS时,sendmail给出一个STARTTLS命令。

这时的我只好转向postfix。任务变成在Solaris 8中安装postfix。之前也有用过postfix,但基本都是默认配置。在Solaris上安装这种非起源于SUNOS的软件,自然想到了编译安装。于是下载source code,编译之。启动,测试,同样的错误。

好吧,原来postfix也不是安装就能用的。研究一番,发现至少还要做两件事。

  1. 在配置文件中加入:smtp_tls_security_level = may。 默认值是none。改成may之后,当postfix遇到server端启用TLS是,会执行STARTTLS。
  2. 编译postfix时,需要指定包含TLS。在执行make之前,需要如下步骤: On Solaris, specify the -R option as shown below:

     % make tidy # if you have left-over files from a previous build
     % make makefiles CCARGS="-DUSE_TLS -I/usr/local/include" \
         AUXLIBS="-R/usr/local/lib -L/usr/local/lib -lssl -lcrypto"
    

这次发信成功了,但是直接发信是不会成功的。发完信必须重启postfix,信才能发出去。从/var/log/syslog中发现如下错误:

Mar 18 14:59:55 qatest postfix/pickup[6176]: [ID 947731 mail.crit] fatal: too many errors - program terminated
Mar 18 15:00:56 qatest postfix/pickup[6189]: [ID 947731 mail.error] error: accept connection: Not a data message

google之,bing之,无果。读代码,改权限,无果。后,在万念俱灰中发现opencsw项目。只能说业界良心。

OpenCSW (pronounced open-cashew /ˈkæʃuː/) is an easy to use open source software distribution installable on top of Solaris and Solaris-based systems. OpenCSW is a community project dedicated to working closely with upstream projects to improve portability of open source software.

删除原来的postfix(根据/usr/libexec/postfix/postfix-files,删除文件即可)。安装opencsw,使用之。好吧,使用opencsw安装的postfix,终于达到了要求。

PS: opencsw的体验跟yum很像。自动解决依赖关系。

PSS:这篇文章使用双拼写成。正在学习中。


comments powered by Disqus