[转]让国外邮件服务商不再拒收你的邮件,The IP you're using to send mail is not authorized

本文介绍了解决国外邮件服务商拒收邮件的问题,通过移除IP地址的CBL和PBL黑名单状态,实现了正常发送邮件至Gmail、Hotmail和Yahoo等服务。
 

让国外邮件服务商不再拒收你的邮件,The IP you're using to send mail is not authorized

日期:2010-09-09 | 分类:技术类

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://www.ff-bb.cn/logs/74631918.html

前几天托管了一台服务器,网通的IP,使用Mdaemon配置了一个mail server。将一个域名MX记录解析到了这台服务器上,然后发邮件测试了一下,发现发给大的email服务商(gmail hotmail yahoo)都会报550错误:The IP you're using to send mail is not authorized;  发给163  qq  公司邮箱倒是正常。发现发往国外的email会有报错,发给国内基本上正常,看来国外的邮件服务商要求比较严格。我的是新服务器,新IP,估计这个IP的前任发了不少垃圾邮件,做了些“坏事”

中间的解决办法:发现服务器没有开放25  110等基本邮件端口,开启,问题依旧,仍旧不能发送。

Gmail的帮助信息中提到

http://mail.google.com/support/bin/answer.py?answer=10336 的内容

"The IP you're using to send email is not authorized..."(您用于发送电子邮件的 IP 未经授权...)

为了阻止垃圾邮件,Gmail 会在发送邮件的 IP 地址与发送域不匹配时拒绝接收邮件。 要将邮件从您的服务器发送到 Gmail,我们建议您使用您的 ISP 提供的 SMTP 中继。 请注意,目前我们无法将您的 IP 地址列入白名单或视为例外。

这个帮助信息貌似帮助不大,我们基本上不能要求ISP能提供什么SMTP中继服务。

后来在国外的论坛上搜索到这个 http://www.spamhaus.org/lookup.lasso  通过查询我的IP,

211.144.206.xx is listed in the CBL

211.144.206.xx is listed in the PBL

in the following records:

首先是要去从CBL中去除,从这个链接去除,http://cbl.abuseat.org/lookup.cgi

提交之后,大约半小时可生效。然后就可以从http://www.spamhaus.org 去除PBL了。CBL和PBL(Policy Block List)还不是一个地方管理。

点击此 PBL434107 链接,网页上有如下提示,与按钮,点击此按钮。

然后 同意

到如下页面,

点击查看原始尺寸

第一栏填写 你的IP ,第二栏填写你的mail server上的一个账号,不要使用公共邮箱,然后选择IP所在的国家,输入验证码;选择你的IP地址 和 IP用途,提交即可,过几分钟就能收到系统发给你的邮件,邮件中会有一个5个字符的 字符串,复制下来,填入到网页上来。

点击查看原始尺寸

系统提示大概过半小时即可从PBL黑名单中去除你的IP,并且会与各邮件厂商同步IP 的list

这样gmail  hotmail  yahoo就可以收到你发的邮件了。

<think>好的,我现在需要处理用户提出的关于“Error org.freedesktop.DBus.Error.AccessDenied: Sender is not authorized to send message”的问题。用户之前询问过类似的D-Bus错误,所以可能需要延续之前的解决方案,但这次的问题更具体于访问权限。 首先,我需要回忆一下D-Bus的权限机制。D-Bus使用策略文件来控制哪些服务和用户能够发送消息或调用方法。这个错误通常是因为发送方没有足够的权限,或者策略文件中没有允许相应的操作。 接下来,我应该考虑用户可能的场景。用户可能是在尝试通过D-Bus调用某个系统服务时遇到了权限问题。可能的情况包括:服务配置了严格的策略,用户或进程没有正确的权限,或者SELinux/AppArmor等安全模块阻止了访问。 然后,我需要分解问题的可能原因,并给出逐步的解决方案。常见的解决步骤可能包括检查策略文件、查看服务权限配置、检查安全模块日志等。 需要确保回答结构清晰,分步骤说明,每个步骤都要有验证方法和解决建议。例如,首先检查D-Bus策略文件,然后确认服务安装正确,接着检查安全策略如AppArmor或SELinux,最后考虑用户权限问题。 同时,用户之前的回答中提到了使用busctl和dbus-send等工具,这次可能需要类似的方法来诊断权限问题。比如使用busctl检查服务的权限,或者查看系统日志中的拒绝记录。 还要注意用户可能需要具体的命令示例,例如如何编辑策略文件,如何重新加载D-Bus配置,如何检查AppArmor状态等。这些具体的命令能帮助用户一步步操作,避免遗漏步骤。 另外,需要提醒用户关于系统级服务修改的风险,比如编辑系统文件可能需要sudo权限,错误配置可能导致服务不可用,建议备份文件后再修改。 最后,总结可能的解决路径,并建议如果所有步骤都尝试后问题依旧,应联系服务开发者或查阅更多文档,确保用户有进一步的行动方向。</think>当出现 `org.freedesktop.DBus.Error.AccessDenied` 错误时,表明 **D-Bus 安全策略阻止了发送方的请求**。以下是系统级权限问题的详细排查与解决方案: --- ### 1. **理解错误根源** - **直接原因**:发送方(进程/用户)未被授权执行以下操作: - 调用特定 D-Bus 接口的方法 - 拥有特定服务名称 - 访问特定对象路径 - **底层机制**:D-Bus 的访问控制由 `/etc/dbus-1/system.d/*.conf` 策略文件定义。 --- ### 2. **检查 D-Bus 策略文件** - **步骤**: 1. 定位目标服务的策略文件(通常以服务名命名,如 `com.example.Service.conf`): ```bash ls /etc/dbus-1/system.d/ | grep "服务名关键词" # 例如:grep "Speech" ``` 2. 检查策略中是否允许发送方的用户或进程: ```xml <!-- 示例:允许用户 "root" 和组 "audio" 访问 --> <policy user="root"> <allow own="com.daimler.Speech1.Engine"/> <allow send_destination="com.daimler.Speech1.Engine"/> </policy> <policy group="audio"> <allow send_destination="com.daimler.Speech1.Engine"/> </policy> ``` - **修复方法**: - 修改策略文件,添加 `<allow>` 规则(需 root 权限)。 - 重载 D-Bus 配置: ```bash sudo systemctl reload dbus # 部分系统需重启服务:sudo systemctl restart dbus ``` --- ### 3. **验证服务安装权限** - **可能问题**:服务未以正确用户身份运行。 - 例如:服务应属于 `audio` 组,但实际以 `nobody` 运行。 - **检查方法**: ```bash # 查看服务进程所属用户 ps aux | grep "服务名" # 如:dialog-engine # 查看服务配置文件(systemd) systemctl cat dialog-engine.service | grep "User=" ``` --- ### 4. **检查 AppArmor/SELinux 限制** - **场景**:即便 D-Bus 策略允许,安全模块仍可能拦截请求。 #### **AppArmor**(Ubuntu/Debian): ```bash # 查看当前生效的 AppArmor 配置 sudo aa-status | grep "服务名" # 检查日志中的拒绝记录 sudo journalctl -k -g "apparmor" --since "5 minutes ago" # 临时禁用 AppArmor 测试(谨慎操作) sudo systemctl stop apparmor ``` - 若问题消失,需修改服务的 AppArmor 配置文件(`/etc/apparmor.d/`)。 #### **SELinux**(RHEL/Fedora): ```bash # 查看 SELinux 拒绝日志 sudo ausearch -m avc -ts recent # 临时设置为 permissive 模式测试 sudo setenforce 0 ``` - 若问题消失,需添加 SELinux 规则或调整上下文。 --- ### 5. **手动测试权限** 通过 `busctl` 工具验证当前用户权限: ```bash # 查看当前用户对目标服务的权限 busctl call org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetConnectionUnixUser STRING:"服务名" # 尝试以 root 身份调用(排除用户权限问题) sudo dbus-send --system --dest=服务名 --print-reply /对象路径 接口.方法 ``` --- ### 6. **服务自身的权限配置** 某些服务(如 BlueZ/PulseAudio)会额外限制调用者: - **示例**:BlueZ 要求调用方属于 `bluetooth` 组。 ```bash # 将当前用户加入所需组 sudo usermod -aG bluetooth $USER newgrp bluetooth # 立即生效 ``` --- ### 7. **D-Bus 默认策略** 如果服务无专属策略文件,D-Bus 会应用默认规则: - **默认行为**:拒绝非 root 用户访问系统总线(`system bus`)。 - **解决方法**: - 将服务注册到会话总线(`session bus`)。 - 或显式添加 `<allow>` 规则到默认策略。 --- ### 总结步骤 1. **修改 D-Bus 策略** → 添加发送方权限。 2. **检查安全模块** → 调整 AppArmor/SELinux。 3. **验证服务用户/组** → 确保与策略匹配。 4. **检查服务自身限制** → 如用户组要求。 若仍无法解决,提供以下信息可进一步分析: ```bash # 收集关键信息 journalctl -u dbus --since "1 hour ago" | grep "DENIED" busctl status 服务名 cat /etc/dbus-1/system.d/相关策略文件.conf ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值