使用Postfix与Sendmail的问题

我已经使用"apt-get install sendmail"安装了sendmail,并且使用Webmin安装了postfix。但是Postfix无法启动,当我检查/var/log/mail.err时发现问题。
*Jul 11 14:09:03 victoria postfix/master[6588]: fatal: bind 0.0.0.0 port 25: Address already in use
Jul 11 14:09:10 victoria postfix/master[6821]: fatal: bind 0.0.0.0 port 25: Address already in use
Jul 11 14:09:11 victoria postfix/master[6820]: fatal: daemon initialization failure
Jul 11 14:09:12 victoria postfix/postfix-script[6822]: fatal: mail system startup failed*

我的"netstat -tap"显示:
*root@victoria:/etc/init.d# netstat -tap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 localhost:mysql         *:*                     LISTEN      2365/mysqld     
tcp        0      0 localhost:submission    *:*                     LISTEN      5639/sendmail: MTA:
tcp        0      0 *:webmin                *:*                     LISTEN      896/perl        
tcp        0      0 *:ssh                   *:*                     LISTEN      554/sshd        
tcp        0      0 localhost:smtp          *:*                     LISTEN      5639/sendmail: MTA:
tcp        0    384 192.241.205.208:ssh     175.139.222.195:45062   ESTABLISHED 29460/1         
tcp6       0      0 [::]:http               [::]:*                  LISTEN      773/apache2     
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN      554/sshd        
getnameinfo failed
getnameinfo failed
tcp6       0      1 [UNKNOWN]:http          [UNKNOWN]:60003         LAST_ACK    -*   

禁用Sendmail可以使Postfix运行起来。但是我以为sendmail和postfix应该一起工作?如何配置在服务器上同时拥有它们两个?
谢谢。

你能告诉我是什么原因导致了这个问题吗?sendmail.postfix: fatal: anonymous@douhisi.pair.com(3301): 在邮件头中找不到收件人地址。 - user402388
3个回答

Postfix是一个可以直接替代sendmail的软件,它包含了自己的sendmail二进制文件(请参见本帖底部)。我真的很惊讶apt允许你这样做,我以为它们会产生软件包冲突。
无论如何,修复方法如下:
sudo apt-get purge sendmail
sudo apt-get install --reinstall postfix
sudo /etc/init.d/postfix restart

我的系统上使用的sendmail是由postfix提供的证据。
$ dpkg -S `which sendmail`
postfix: /usr/sbin/sendmail

如果你仍然遇到问题,以下是如何找出哪个程序(以及哪个软件包)占用了25号端口的方法:
$ sudo netstat -pel | grep smtp
tcp 0 0 *:smtp *:* LISTEN root 8487 2212/master

$ # Then we use the 2212 from that in the following to get the package:
$ dpkg -S "$(sudo ps ux | grep 2212 | awk '{print $NF}')"
postfix: /usr/lib/postfix/master

在我的情况下,那是后缀。在你的情况下,我希望看到其他的东西。彻底摧毁它。

嗨,感谢你的帮助。我按照你的指示进行了操作,但仍然遇到相同的错误。=========================================================== Jul 11 19:10:59 victoria postfix/master[15150]: fatal: bind 0.0.0.0 port 25: Address already in use Jul 11 19:11:48 victoria postfix/master[15432]: fatal: bind 0.0.0.0 port 25: Address already in use Jul 11 19:11:49 victoria postfix/master[15431]: fatal: daemon initialization failure Jul 11 19:11:50 victoria postfix/postfix-script[15433]: fatal: mail system startup failed有什么想法吗?也许这次不是sendmail的问题? - Chock CHin Li
@ChockCHinLi 在结尾添加了一点内容,以帮助你弄清楚发生了什么。 - Oli
2嘿,感谢你的帮助。我重新启动了服务器,postfix已经启动了,日志中也没有错误了!谢谢! - Chock CHin Li

对我来说,解决办法是在Ubuntu13中采用Oli的一个变种答案:
错误:致命错误:绑定0.0.0.0端口25:地址已在使用中
发送邮件清除没有起作用:
软件包'sendmail'未安装,因此未被移除
所以我尝试了:
service sendmail stop
sudo apt-get install --reinstall postfix

工作了!

sudo service postfix stop 对我来说起了作用。然后使用 sudo /etc/init.d/postfix reload 成功了。 - Melroy van den Berg
如果显示“未安装sendmail软件包,因此无法删除”,您应该运行sudo apt-get purge sendmail*。 - Janaka R Rajapaksha