免费国外空间,国外免费空间,'s Archiver

idc886 发表于 2012-2-14 00:20

VPS装debian发邮件问题 配置exim4邮件系统:Mailing to remote domains not supported

[color=#0000ff]在hostigation 的KVM型VPS上  需手动装 系统的,[/color]
[color=#0000ff][/color]
[color=#0000ff]购买的是最便宜的那款KVM型 $30/年   128M内存(SWAP 256M)[/color]
[color=#0000ff][/color]
[color=#0000ff]在他的SolusVM 面板上,没有CentOS系统光盘。所以就选择装debian系统[/color]
[color=#0000ff][/color]
[color=#0000ff]debian 系统, 先用的是中文语言,[/color]
[color=#0000ff][/color]



在VPS上安装好LNMP以后发现发送邮件功能无效 提示发送失败

查询资料以后是缺少邮件系统 搜索到最后发现下面这个

按照说明配置完毕就可以发送了 记录一下


其实默认debian lenny是带有Exim4的,据说很早以前是sendmail,因为种种原因,sendmail不被看好,我自己也用过一次sendmail感觉非常慢(估计是DNS的原因,但是Exim4为何没有DNS的问题呢? 奇怪!)

所以我们还是来使用默认安装好了的Exim4吧,但是大家要注意,动态IP使用Exim4在互联网上发送邮件,多半都会被标记为spam的,所以没有静态IP的ADSL用户不用继续看了。

我的环境是debian lenny 一个静态IP

[color=blue]配置命令: dpkg-reconfigure exim4-config[/color]

这是一个文本对话窗口,
一个对话窗口是一个欢迎辞,选择(OK)即可,

第二个对话窗口选择邮件类型的:
[color=blue]internet site; mail is sent and received directly using SMTP[/color]

需要选择这个。

后边的一路默认设置。  就安装好了。。   就可以测试PHP探针发信了!



PHP要使用sendmail需要做一个软链接   

ln -s  /usr/sbin/exim4  /usr/sbin/sendmail

现在就可以使用PHP的sendmail()函数了,忘掉臃肿的sendmail吧!

/etc/init.d/exim4 restart    这个是重启命令


以上方法参考:
[url=http://xiaoku.sinaapp.com/debian%e9%85%8d%e7%bd%aeexim4%e9%82%ae%e4%bb%b6%ef%bc%88mail%ef%bc%89%e7%b3%bb%e7%bb%9f/]http://xiaoku.sinaapp.com/debian%e9%85%8d%e7%bd%aeexim4%e9%82%ae%e4%bb%b6%ef%bc%88mail%ef%bc%89%e7%b3%bb%e7%bb%9f/[/url]






[b]参考图: 我们安装的是中文版本。选择第一个即可。[/b]

[attach]2144[/attach]

选择服务器是网络中,然后后面的一个ip是默认使用127.0.0-.1就可以了

后面的就按提示填一下,接按回车。。。  

最后安装好了就可以使用了 sendmail()函数 来发邮件了!

就可以上传一个PHP探针,下面有一个邮件检测的,在那里就可以测试哦。

DX后台,就有选项,使用  sendmail()函数  来发邮件,

就不需要去用SMTP 服务,来设置邮件等发信。(SMTP发信不成功PHP函数限制)



[color=red]注:安装后,测试邮件能不能发,请上传PP探针,并用GG邮箱进行测试。[/color]
注:配制Exim4中第二步 [b]系统邮件名称[/b],请填一个域名。如:idc866.com
     这样,发出的邮件都以 www@idc866.com 代发, 163、qq邮箱才接收正常。



[color=#ff0000][b]注:[/b][/color]有时执行 dpkg-reconfigure exim4-config  提示 无exim4 源。

     那么需要执行:apt-get install exim4   进行安装后即可执行。



[b]注:[/b] 有的时候,以上都操作了,还发不了信。  就要用PHP探针检测一下看,
       查看这一项:sendmail_path   /usr/sbin/sendmail -t -i
       有的时候是这一项不正常。  

      就算执行了 ln -s  /usr/sbin/exim4  /usr/sbin/sendmail  软连接
      [color=red]有时 PHP探针检测 sendmail_path  是错误的,有时只显示:-t -i[/color]
      [color=blue]★在php.ini 中添加:sendmail_path=/usr/sbin/sendmail -t -i 即解决。
[/color]      我们就碰到过一次几次这样的,都是 debian 系统,就是这样解决的。


     如LNMP 的一键修改并重启:  (就可以用php探针测试邮箱收信了)
[code]sed -i '/;sendmail_path/a sendmail_path=/usr/sbin/sendmail -t -i' /usr/local/php/etc/php.ini
/etc/init.d/php-fpm restart
[/code]



------------------------------------------
一个服务器又碰到问题,安装 debian 64位,装好 LNMP

安装好后,php探针发信显示成功,就是收不到信。但直接在系统中使用命令能收。

/var/log/exim4  查看发信日志里显示:

<= www@debian.net U=www P=local S=403
2012-06-12 11:27:24 1SeHlM-0005dg-AW ** idc886@qq.com R=nonlocal: [b][color=red]Mailing to remote domains not supported[/color][/b]
2012-06-12 11:27:24 1SeHlM-0005dj-FC <= <> R=1SeHlM-0005dg-AW U=Debian-exim P=local S=1225
2012-06-12 11:27:24 1SeHlM-0005dg-AW Completed
2012-06-12 11:27:24 1SeHlM-0005dj-FC => customer <www@debian.net> R=local_user T=mail_spool
2012-06-12 11:27:24 1SeHlM-0005dj-FC Completed


先前 执行了 [color=#0000ff]dpkg-reconfigure exim4-config[/color] 好像运行不了,提示什么错误的。

后台不知怎么又能执行了。  说是手动下载 sendmail  编辑了。。 应该不影响这个命令

执行后,进入后原来是用默认第四:仅本地投递信件:无网络连接[33]2[/33]

选用第一个:互联网站:直接通过SMTP发送或接收信件 就OK了。

不知为什么先前无法运行这个命令。  后来就可以了。








[color=blue]其它:[/color]
hostigation 的 OpenVZ型 VPS上的系统都是 一键自动安装的。
不管安装 debian、还是 CentOS,系统,sendmail发信组件都默认已安装。
无需再另外安装,就可以直接使用 sendmail 函数发信。

hostigation 的  KVM型 VPS,需要自己手动装系统,所以发信组件也需要手动装。






[color=blue]插曲:[/color]

先开始安装时,由于SSH里显示中文乱码,所以就没看提示,一路回车。
安装完后,还是不能发邮件。

最后,把SSH登录中文乱码解决后,再看安装提示,原来要选择第一个选项才可。


相关:
[url=http://www.idc866.com/thread-14779-1-1.html][color=#000000]解决ssh中文乱码 SSH 连接中文乱码问题 KVM型VPS debian 系统 SSH里中文乱码[/color][/url]





---------------------------------------

debian下已经使用exim4替代了sendmail的功能。
大概是认为sendmail比较臃肿而已

apt-get install exim4  (debian 有的系统需要执行这个安装)


配置:dpkg-reconfigure exim4-config

开始配置
选择服务器是网络中,然后ip使用127.0.0.1就可以了
一路默认设置,不用管他

注意: 有里需要编辑vim /etc/hosts
127.0.0.1   localhost.localdomain localhost hostname(自己查)


测试:mail jiaqiubo#msn.com
Subject: hello
wo hen hao.
[b][color=red].[/color][/b]
Cc:
这里的 (回车 + . + 回车) 是结束的意思。   (Cc:上面一行还有一点  加红了)
  

注意的问题:

log记录将不会再存放与mail下,他使用自己的log,tail -f /var/log/exim4/mainlog
php中配置sendmail选项的时候需要注意的问题
sendmail_path = sendmail -t

原因:sendmail_path预设的参数会带有 -t -i
-i会造成Exim持续等待输入,而無法侦测到文件是否传输完毕,必须手动去掉这个参数。

[url=http://www.linuxdiyf.com/bbs/thread-109329-1-1.html]http://www.linuxdiyf.com/bbs/thread-109329-1-1.html[/url]






---------------------------------------
[color=red]注:在hostigation 的  KVM型 VPS ,debian系统上装sendmail  会提示这样的错误:[/color]

运行 apt-get install sendmail  

有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:[11]1[/11]
下列软件包有未满足的依赖关系:
sendmail : 依赖: sendmail-bin 但是它将不会被安装
E: 破损的软件包

可能还要安装  sendmail-bin  依赖环境!   如下操作:



相关:vps/lnmp,debian下安装sendmail组件

对于小内存VPS来说,debian是个不错的选择。占内存小等特点深受大家欢迎。我以前一直都用Centos,其中原因是因为里面自带 sendmail组件很方便。sendmail组件是linux上一个常用的发送邮件的组件。邮件功能在备份数据,网站邮件验证方面非常重要。
好吧 直接说操作吧

1,第一步连接上SSH,输入以下命令:
apt-get install sendmail-bin
注:sendmail组件需要依赖sendmail-bin,故先安装sendmail-bin。

2,继续输入命令
apt-get install sendmail

[url=http://www.uzzf.com/news/31/2045_1.html]http://www.uzzf.com/news/31/2045_1.html[/url]

idc886 发表于 2012-2-14 00:30

--------------------------------------------------------------其它一些收集
VPS上lnmp探针发送邮件不能成功的解决方法

在VPS上安装了lnmp0.7,用探针页面里的发送邮件功能检测是否能正确发送邮件,提示发送失败。

在另一个VPS上测试,则发送成功,邮箱立即收到测试邮件。

怀疑与操作系统有关,邮件发送成功的VPS是装的是CentOS 5,失败的VPS装的是Debian6。

换另一台装Debian6的VPS,发送邮件却同样成功。



又怀疑发送成功与否与VPS类型有关,因为成功的是OpenVZ的,失败的是Xen的。

网上搜了一下资料,参考[url=http://www.rockia.net/2011/06/solve-send-mail-problem-with-linux]http://www.rockia.net/2011/06/solve-send-mail-problem-with-linux[/url],测试发现发送邮件失败的Xen VPS上都没有安装Sendmail。

apt-get install sendmail

/etc/init.d/sendmail status

sendmail安装后,探针里发送测试邮件成功。

此前不能正确发送的原因不在于Xen或OpenVZ,也与OS无关,而是VPS部署或做集成OS时或安装某些软件时是否关联安装了sendmail。


[url=http://1024.me/resolving-sending-mail-in-phpcheck-error/]http://1024.me/resolving-sending-mail-in-phpcheck-error/[/url]





[font=Arial][size=5][color=#467fab]解决服务器无法通过sendmail发送邮件问题[/color][/size][/font]

从2009年开始写博客,洛奇亚也算是在博客界里面算活跃的一位草根,在这个过程里面,也认识了不少的博客朋友。有的经常互访,有的时而经过留下一双足印,不管怎么样,每一位来访的朋友我都心存感激。 [p=30, 2, left]这样子的一个开头,可能大家会觉得我要离开或者什么,哈哈,不是,我只是想说,在这个过程中,我也看到了很多博主/站长和我一起成长。不单单我们在网站管理方面的经验日积月累,我们因为站的增长也需要升级服务器质量。而很多朋友就从免费空间升级到收费虚拟空间,有的就从虚拟空间到和朋友合租VPS,有的甚至自己独享主机。看到增长是好事情,不过可能也意味着我们需要准备迎接更多的难题。而今天,我就要跟大家分享一下我从虚拟空间搬迁到[font=Arial][color=#467fab]Linode[/color][/font] VPS后一直遇到的一个问题究竟怎么样终于被解决了。
[/p]问题: [p=30, 2, left]自从开博客以来,一个叫做“Comment Reply Notification”(评论回复通知)的插件我都有保留着,因为方便通知我的读者有人对他/她们的评论作出回应――通常是我的回复。但是当我用[font=Arial][color=#467fab]军哥[/color][/font]的LNMP一键安装包在CentOS上面设置了Nginx + MySQL + PHP的网页服务器后,将博客放到Linode上面,竟然发觉博客再也无法发送邮件出去了。[/p]探索过程: [list=1][*]LNMP安装成功的时候,在/home/wwwroot/这个根目录有一个叫做p.php的探针文件,里面在最后那里有一个测试邮件发送的表格,我输入我自己的邮件,然后点击测试,登了大概10分钟也没有收到邮件。
我连续尝试了不同的电子邮箱,都不行,甚至连spam也查看了还是没有结果。[*]然后我就怀疑是否服务器没有安装sendmail的组件,因为听说不是所有的Linux都默认安装这个组件。我用的是CentOS,而且因为软件兼容的安全起见,我选择了32位的版本,所以我输入一下的命令:
[i][b]yum install sendmail
[/b][/i]得到的回复是“Nothing to do”,也就是说,sendmail组件已经成功安装,不需要再安装了,我用下面的命令来检查是否真的:
[b][i]/etc/init.d/sendmail status
[/i][/b]如果sendmail的确是安装了,会跟我得到的结果一样,服务器会返回sendmail现在占用的进程ID,和告诉你sendmail是在running(运行中)[*]然后我就考虑,是否sendmail启动不正常,所以我就尝试重启sendmail组件的服务:
[b][i]/etc/init.d/sendmail restart
[/i][/b]发现sendmail关闭和重启都没有问题,但是测试邮件发送还是失败。[*]最后,我在某国外论坛看到有人说可能需要安装postfix,于是我将它安装上去:
[b][i]yum install postfix
[/i][/b]当然,直到这一步,还是失败了。不过在我接下来提供解决办法的过程,直到问题解决,我其实都没有删除postfix,所以我也不知道是否究竟有帮助,既然没有什么影响,我就先留着。[/list]解决方法:
说了这么多惨痛的失败经历,我终于找到问题的源头了,下面是解决方法,到最后竟然是DNS的问题而已。
首先,你要查看一下[b]/etc/nsswitch.conf[/b]这个文件包含有下面一行设置,如果你用命令行,就直接可以[i][font=Arial]vi /etc/nsswitch.conf[/font][/i] 或者[i][font=Arial]nano /etc/nsswitch.conf[/font][/i],具体就要看你自己喜欢那个文字编辑器了,当然你也可以用FTP下载回来本地,用更多的文字编辑软件编写好了在覆盖原来的文件[i][font=Arial],[/font][/i]这个就不多说了。 [indent]hosts: files dns[/indent]
然后,要查看[b]/etc/resolv.conf[/b]这个文件,要保证有下面一行,同样,编辑方法跟上面一样,不重复了: [indent]domain myserver.mydomain.com[/indent]
最后,要编辑[b]/etc/hosts[/b]这个文件,要有下面两行: [indent]127.0.0.1       localhost localhost.localdomain loopback me127.0.0.1       MyServer myserver.mydomain.com[/indent]
这样子,正确的DNS已经设置好,重启服务器,应该就可以看到sendmail这个组件可以用了。
希望上面的解决方法可以帮助大家。^-^,另外,我非常感谢军哥的付出,没有他的一键安装包,可能很多人都还在纠结在服务器的配置上面。
[url=http://www.rockia.net/2011/06/solve-send-mail-problem-with-linux]http://www.rockia.net/2011/06/solve-send-mail-problem-with-linux[/url]


-----------------------------------------------  其它相关收集

注意的问题:
log记录将不会再存放与mail下,他使用自己的log,tail -f /var/log/exim4/mainlog
php中配置sendmail选项的时候需要注意的问题
sendmail_path = sendmail -t
原因:sendmail_path预设的参数会带有 -t -i
-i会造成Exim持续等待输入,而無法侦测到文件是否传输完毕,必须手动去掉这个参数。  
配置结束后,我们需要执行update-exim4.conf使配置生效,并重启一下exim ,执行/etc/init.d/exim4 restart

idc886 发表于 2012-2-14 00:47

[table]
[tr][td]
其它相关收集:


Debian下配置Exim4通过Gmail发邮件

Exim4是Debian默认的邮件传输代理(MTA),本文将介绍如何配置Exim4来通过Google的smtp服务器发送邮件。
利用Debian的自动配置工具,执行

# dpkg-reconfigure exim4-config

回答以下问题:
- split configuration into small files,选择 Yes
- 邮件服务器类型,选择 Choose mail sent by SMARTHOST; received via SMTP or fetchmail
- System Mail Name,填入域名,例如 example.com
- IP Adresses to listen on for incoming SMTP connections,填 127.0.0.1
- Other destinations for which mail is accepted,空
- Machines to relay mail for,空
- Machine handling outgoing mail for this host (smarthost),这个填 smtp.gmail.com::587
- don't hide local mail name in outgoing mail,选 No
- don't keep number of DNS-queries minimal (Dial-on-Demand), 选 No

自动配置完成后,还需要手动修改一些配置文件。

1. 编辑 /etc/exim4/passwd.client
# vi /etc/exim4/passwd.client

增加以下几行
gmail-smtp.l.google.com:username@gmail.com:password
*.google.com:username@gmail.com:password
smtp.gmail.com:username@gmail.com:password

执行
# chown root:Debian-exim /etc/exim4/passwd.client

2. 编辑 /etc/exim4/conf.d/transport/30_exim4-config_remote_smtp_smarthost

# vi /etc/exim4/conf.d/transport/30_exim4-config_remote_smtp_smarthost
在 "hosts_try_auth..." 之前增加
port=587
将发送者邮件地址添加到 /etc/exim4/email-addresses
# echo [url=mailto:]'linuxuser@LocalHost[/url]: [url=mailto:username@gmail.com]username@gmail.com'[/url]>> /etc/exim4/email-addresses

最后,执行
# update-exim4.conf

现在可以测试是否配置成功了,执行

# mutt -s "hello" [url=mailto:user@gmail.com]user@gmail.com[/url]< message.txt

检查一下[url=mailto:user@gmail.com]user@gmail.com[/url]是否受到邮件。
如果没有收到,可能是 /etc/exim4/passwd.client 配置的问题,执行

# tail /var/log/exim4/mainlog


来源:
[url=http://i.hi.baidu.com/madrigar/blog/item/9a5cdbb4ff2899748bd4b290.html]http://i.hi.baidu.com/madrigar/blog/item/9a5cdbb4ff2899748bd4b290.html[/url][/td][/tr]
[/table]

solier 发表于 2012-2-14 08:24

不错,学习了!很有用的教程!:lol

雨夜里 发表于 2012-2-14 10:17

呵呵  好多教程呀~  暂时还没用VPS,估计很快会用到的~ :)

amao 发表于 2012-2-14 11:49

好东西…

idc886 发表于 2012-6-12 23:31

<= www@debian.net U=www P=local S=403
2012-06-12 11:27:24 1SeHlM-0005dg-AW ** idc886@qq.com R=nonlocal: Mailing to remote domains not supported
2012-06-12 11:27:24 1SeHlM-0005dj-FC <= <> R=1SeHlM-0005dg-AW U=Debian-exim P=local S=1225
2012-06-12 11:27:24 1SeHlM-0005dg-AW Completed
2012-06-12 11:27:24 1SeHlM-0005dj-FC => customer <www@debian.net > R=local_user T=mail_spool
2012-06-12 11:27:24 1SeHlM-0005dj-FC Completed



这个问题的相关贴收集:
debian中打开exim4的发邮件功能


debian的sarge和etch都使用exim4作为MTA。为了安全,系统默认安装好的exim4是bind在localhost,并且只能收发本地的邮件的。如果发送了外部的邮件,会在/var/log/exim4/maillog中看到类似的信息:
2007-03-04 14:56:03 1HNkdX-0003wV-HU ** xxxxx@163.com R=nonlocal: Mailing to remote domains not supported
我们使用
exim4 -bV
命令可以看到当前exim4的一些版本信息和其它信息,如:
Exim version 4.63 #1 built 20-Dec-2006 14:27:08
Copyright (c) University of Cambridge 2006
Berkeley DB: Sleepycat Software: Berkeley DB 4.3.29: (September  6, 2005)
Support for: crypteq iconv() IPv6 GnuTLS move_frozen_messages
Lookups: lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmnz dsearch nis nis0 passwd
Authenticators: cram_md5 plaintext
Routers: accept dnslookup ipliteral manualroute queryprogram redirect
Transports: appendfile/maildir/mailstore autoreply lmtp pipe smtp
Fixed never_users: 0
Size of off_t: 8
Configuration file is /var/lib/exim4/config.autogenerated
其中最后一行可以看到exim4默认的config file是
/var/lib/exim4/config.autogenerated
从该配置文件中,我们可以看到可以修改绑定的ip、可以收发什么地方的邮件之类的配置。不过,如果我们修改了该配置文件,再使用debian自带的/etc/init.d/exim4 脚本进行重启的话,会发现我们的改动不会生效,因为这个文件的内容又被改回来了。
我检查/etc/init.d/exim4脚本,发现有一个
function upex4conf()
该函数调用了
update-exim4.conf
命令,在每次启动exim4的时候对配置文件进行检查,并更新
/var/lib/exim4/config.autogenerated
文件。update-exim4.conf命令的作用只是以
/etc/exim4/exim4.conf.template
文件作为模板,自动生成exim4的默认配置文件。并且如果
/etc/exim4/exim4.conf
文件存在的话,该命令会立即退出。
其实"update-exim4.conf"只是一个bash脚本,刚才说的该命令的用法都是可以直接看语法得出的.
而命令update-exim4.conf的配置文件是
/etc/exim4/update-exim4.conf.conf
名字比较奇怪。如果要对外发邮件,只需要将该配置文件中的选项
“dc_eximconfig_configtype=local”
修改为
"dc_eximconfig_configtype=internet"
即可。另外
dc_local_interfaces
可以修改bind的ip。
最后的是exim4默认的发送邮件的主机名称为“demohost.”,如果更改这个名字只需要修改
/etc/mailname
文件即可。
不过要注意的是,不要使用不能解析的域名,否则会导致触发邮件发送方的spam过滤机制。比如我随便为我的exim4设置了一个mailname,然后发邮件到网易邮箱,163smtp服务的就会告诉我的exim4,触发了什么spam规则等:
2007-03-31 16:53:15 1JKVAY-0004uW-R8 ** xx@163.com R=dnslookup T=remote_smtp: SMTP error from remote mail server after MAIL FROM:<nobody@my-mail-server>: host mx2.163.com [220.181.xx.xx]: 550 MI:IMF telecommail,3LUfbREBFQB7jKFQAA==.37784S2 1201769595 http://mail.163.com/help/help_spam_16.htm
(上述只是我在debian的使用过程中对exim4的一点点小心得,由于我并不太熟悉mail server和exim4,如有不妥之处请大家指正。)
http://www.joecen.com/2007/03/04/debian-open-the-e-mail-function-exim4/



---------------------------
#apt-get install exim4

2、重启exim4时错误。
终端显示
exim paniclog /var/log/exim4/paniclog has non-zero size, mail system possibly broken
改正:把这个/var/log/exim4/paniclog文件晴空。


出现问题:R=nonlocal: Mailing to remote domains not supported

执行: [color=#0000ff]dpkg-reconfigure exim4-config   设置解决[/color]

页: [1]


Powered by Discuz! Archiver 7.2  © 2001-2012 Comsenz Inc.