这是关于主机名感知和代理的规范问题。
我知道有些协议是主机名感知的;也就是说,当我连接到 HTTP 服务器时,www.example.com
它知道我想要www.example.com
的是 's HTTP 服务,而不是www.example.net
's,即使它们在同一个 IP 地址上。我怎样才能为协议foo做到这一点?
(临时说明:这个问题是根据这个元讨论出现的。)
我有一个 sendmail 服务器。定期(即每小时几次)我得到这样的日志条目:
Sep 3 10:06:49 lory sendmail[30561]: v8396nsQ030561: [37.49.226.159] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA-v6
Sep 3 10:06:49 lory sendmail[30564]: v8396nmv030564: [37.49.226.159] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA-v6
[29 very similar lines deleted]
Sep 3 10:06:50 lory sendmail[30654]: v8396or0030654: [37.49.226.159] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA-v6
Sep 3 10:06:50 lory sendmail[30657]: v8396ou3030657: [37.49.226.159] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA-v6
这个特定的服务器以这种速度运行了一段时间,然后突然爆发,在 110 秒内总共增加了大约 600 个连接;其他人则不那么冗长。它们不会导致我的服务器出现任何问题;fail2ban
得到了一些锻炼,观察邮件日志文件中的 SMTP AUTH 失败,并且不得不忽略所有这些新条目,但这并没有让服务器出汗。
我很好奇,我想问的是,为什么有人会做这样的事情。他们是否希望我的中继/灰名单/SPF 引擎有一个非常小的大脑,并且在 500 次连接后它对自己说天哪,他们真的很想和我交谈,我最好接受他们现在发送的任何东西?他们是否希望我的服务器没有备用虚拟机,而 sendmail 会膨胀并调用 OOM 杀手,从而对我进行 DoSsing?我认为有人做这种事情是有原因的,但有没有人知道这个原因可能是什么?
我想要做的是设置一个 sendmail 服务器,它接受来自每个人的邮件到特定域(例如,example.com
),然后对于定义的收件人列表,将该邮件发送到指定的第三方地址,并将其他所有内容中继到特定的 IP地址。
我试过这个:
[root@splitter mail]# cat relay-domains
example.com
[root@splitter mail]# cat virtusertable
[email protected] [email protected]
并且大部分域的转发工作正常 - 它被传递到由example.com
MX 指定的主机 - 但异常 ( [email protected]
) 被忽略
我试过这个:
[root@splitter mail]# cat local-host-names
example.com
[root@splitter mail]# cat mailertable
example.com esmtp:[1.2.3.4]
[root@splitter mail]# cat virtusertable
[email protected] [email protected]
然后异常邮件被正确拆分,但任何其他用户在本地被退回(User unknown
)。我尝试将其添加到virtusertable
:
@example.com %[email protected]
但是(可能不足为奇)这会导致rewrite: excessive recursion (max 50), ruleset canonify
错误。
我更喜欢基于 sendmail 的解决方案,因为我可以快速尝试这些解决方案。如果我对此没有任何运气,我会向其他 MTA 开放。如果有人对如何做到这一点有任何想法,我会非常感激他们。
我的部分网络资产对可用性难以检查的主机具有相当重要的依赖性。我背后有许多主机,我的 NAGIOS VPS 提供商偶尔会出现路由问题,导致所有这些主机所在的提供商中断。当它不可用时,我更希望它后面的主机显示UNAVAILABLE
而不是DOWN
,因为它们没有关闭。
但是它的可用性很难检测,因为它不能被 PING
[me@nagios systems]$ ping -c 1 -w 1 205.251.232.153
[...]
1 packets transmitted, 0 received, 100% packet loss, time 1000ms
并且似乎没有响应查询的网络服务:
[me@nagios systems]$ nmap -P0 -sT 205.251.232.153
[...]
All 1000 scanned ports on 205.251.232.153 are filtered
但是,它确实参与并响应了traceroute
s,这让我发现当我尝试与选定范围的 UDP 端口通信时,它会返回 ICMP-port-unreachable。这是tcpdump
我做的输出echo foo|nc -u 205.251.232.197 33459
:
[me@nagios systems]$ sudo tcpdump -n -n -i p1p1 host 205.251.232.197
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on p1p1, link-type EN10MB (Ethernet), capture size 65535 bytes
15:04:01.278269 IP a.b.c.d.36139 > 205.251.232.197.33459: UDP, length 4
15:04:01.448659 IP 205.251.232.197 > a.b.c.d: ICMP 205.251.232.197 udp port 33459 unreachable, length 36
所以在我看来,我需要的是一个向主机和端口发送 UDP 数据包并将 ICMP-port-unreachable 视为成功的证据的测试(没有听到任何内容构成失败)。有谁知道这样做的方法?其他人如何处理类似的监控问题?
我遇到了 NAGIOS 系统向流行的电子邮件到 SMS 服务发送电子邮件的问题。电子邮件到短信服务接收Subject:
行中带有文本的电子邮件,并将它们发送到To:
字段中编码的手机号码。到目前为止,一切都很好。可悲的是,sendmail(和它之前的 postfix)似乎在(必须很长的)行中插入了一个无偿的 CRLF Subject:
,这导致我的 SMS 消息在 CRLF 处被截断,当且仅当该Subject:
行包含一个或多个冒号超过无偿的CRLF。
我相信这些消息是正确创建的,但为了确定,这里是我为自己创建一个完全 noddy 测试消息,有一条长线Subject:
:
echo "foo" | mail -s "1234567 101234567 201234567 301234567 401234567 501234567 601234567 701234567 801234567 90123456789" [email protected]
Subject:
请注意,此行中没有额外的冒号;我在这里所做的只是显示在线路上插入了一个额外的 CRLF。这是结果sudo ngrep -x port 25
:
44 61 74 65 3a 20 46 72 69 2c 20 33 31 20 4d 61 Date: Fri, 31 Ma
79 20 32 30 31 33 20 31 30 3a 34 33 3a 35 35 20 y 2013 10:43:55
2b 30 31 30 30 0d 0a 54 6f 3a 20 72 65 61 70 65 +0100..To: reape
72 40 74 65 61 70 61 72 74 79 2e 6e 65 74 0d 0a [email protected]..
53 75 62 6a 65 63 74 3a 20 31 32 33 34 35 36 37 Subject: 1234567
20 31 30 31 32 33 34 35 36 37 20 32 30 31 32 33 101234567 20123
34 35 36 37 20 33 30 31 32 33 34 35 36 37 20 34 4567 301234567 4
30 31 32 33 34 35 36 37 20 35 30 31 32 33 34 35 01234567 5012345
36 37 0d 0a 20 36 30 31 32 33 34 35 36 37 20 37 67.. 601234567 7
30 31 32 33 34 35 36 37 20 38 30 31 32 33 34 35 01234567 8012345
36 37 20 39 30 31 32 33 34 35 36 37 38 39 0d 0a 67 90123456789..
55 73 65 72 2d 41 67 65 6e 74 3a 20 48 65 69 72 User-Agent: Heir
6c 6f 6f 6d 20 6d 61 69 6c 78 20 31 32 2e 34 20 loom mailx 12.4
37 2f 32 39 2f 30 38 0d 0a 4d 49 4d 45 2d 56 65 7/29/08..MIME-Ve
72 73 69 6f 6e 3a 20 31 2e 30 0d 0a 43 6f 6e 74 rsion: 1.0..Cont
65 6e 74 2d 54 79 70 65 3a 20 74 65 78 74 2f 70 ent-Type: text/p
6c 61 69 6e 3b 20 63 68 61 72 73 65 74 3d 75 73 lain; charset=us
大约一半的地方(以粗体+斜体标记),在原始标题中的501234567
和之间,您可以看到插入了一个 CRLF(,在左侧的十六进制转储中,在右侧的纯文本中)。601234567
Subject:
0x0d 0x0a
..
接收 MTA 似乎很乐意对此进行后处理,当我在接收端查看磁盘上存储的邮件时,我在 Subject: 行中只看到一个 LF (0x0a),并且该行被正确解析并在其完整,例如,alpine
。然而,CRLF 在线路上,在我和(优秀的)电子邮件到 SMS 支持人员之间,我们已经确定这些是问题的原因。
所以我的问题是:MTA 在网络上插入无偿 CRLF 是否合法?
如果是,而且我可以证明,那就是电子邮件到 SMS 机构的问题,因为他们不宽容。如果不是,或者是但我无法证明,那么它就成了我的问题,因此带参考的答案将是最有用的。
编辑:我现在可以清楚地知道,有问题的电子邮件到短信服务是kapow。一旦向他们解释了这个问题,他们就明白了,与我一起开发和测试修复,并部署了修复。我带有冒号的长主题行现在可以正确地转发到 SMS 中。我通常不会吹嘘个别公司,尤其是在 SF 上,但我认为值得一提的是,kapow 做了正确的事。(免责声明:我与 kapow 没有任何关系,只是作为付费客户对他们处理问题的方式感到满意。)
我有一张包含多个分区的光盘,每个分区都有不同类型的文件系统(ext3、ext4,比方说,NTFS)。我想知道我是否可以使用 将整个光盘复制到一张新光盘(容量更大)dd
,最好是一次操作。
为了避免不必要的努力,让我澄清一些事情。我对其他方法不感兴趣(我知道正确的方法,第三方软件不可取)。我对理论答案不太感兴趣(“它应该有效”)。我对其他人尝试做这样的事情的经历非常感兴趣。
我知道真正正确的答案是“试试看”,但我距离相关光盘 250 英里。
像我们许多人一样,我有一个 apache 服务器(2.2.15,加上补丁),上面有很多虚拟主机。可以肯定的是,我拥有的不仅仅是 IPv4 地址,这就是为什么我使用 NameVirtualHost 在同一个 IPv4 地址上运行许多地址。
我正忙于让我所做的一切都支持 IPv6。该服务器现在有一个路由 /64,这给了我大量的 v6 地址供我使用。我试图找到的是一种简单的方法来告诉每个 v4-NameVirtualHost 它也应该在唯一的 ipv6 地址上充当 VirtualHost。我真的,真的不想为每个虚拟主机定义两次。
有谁知道一种优雅的方式来做到这一点?或者做一些类似的事情,以防我在我的问题中嵌入任何危险的无知假设?
我正在努力解决这个问题,但我不明白为什么它不起作用。我希望有人能阐明这一点,否则,请给我一些调查途径的建议。
我有一个 Red Hat 7.3 系统(不要问),希望增加wls81
用户的打开文件限制。我以为我只是无法控制它,但它越来越看起来好像我只是遇到了我需要更改的用户的问题。我已将以下行添加到/etc/security/limits.conf
:
wls81 soft nofile 10100
wls81 hard nofile 10240
madhatta soft nofile 10100
madhatta hard nofile 10240
pam_limits.so
据我所知,正在被正确调用:
[madhatta@server madhatta]$ sudo grep limits /etc/pam.d/*
/etc/pam.d/login:session required /lib/security/pam_limits.so
/etc/pam.d/sshd:session required /lib/security/pam_limits.so
/etc/pam.d/su:session required /lib/security/pam_limits.so
/etc/pam.d/system-auth:session required /lib/security/pam_limits.so
当我以自己的身份 ssh 时,我得到了新的软限制,并且可以增加到硬限制:
desktop> ssh server
Last login: Thu May 10 13:20:13 2012 from a.b.c.d
[madhatta@server madhatta]$ ulimit -n
10100
[madhatta@server madhatta]$ ulimit -n 10200
[madhatta@server madhatta]$ ulimit -n
10200
[madhatta@server madhatta]$ ulimit -n 10300
bash: ulimit: cannot modify open files limit: Operation not permitted
但是当我以wls81
用户身份登录时,我不能:
desktop> ssh wls81@server
Last login: Wed May 9 22:29:33 2012 from a.b.c.d
[wls81@server wls81]$ ulimit -n
1024
[wls81@server wls81]$ ulimit -n 10000
bash: ulimit: cannot modify open files limit: Operation not permitted
当我su -
对每个用户时也会发生同样的情况。老实说,我不明白为什么这个用户不能ulimit
重置它。有人有想法么?