rabbit51

it's since Nov.30 2005
May.29 2014, transferred from broach

ヤマハ NVR510/500 LUA rt.mail() apiとぷららメールサーバー

2022-05-06 10:00:00 | NVR510
ヤマハ NVR510/500 Transix DS-Lite(IPv4 over IPv6)とIPv4 PPPoEとの自動切替」でrt.mail(LUA api)の挙動がおかしいのを感じていた。
ぷららのメールサーバーは、ぷらら網経由のsmtp(25), インターネット経由のサブミッションポートsmtp(587)共にstartTLS対応に加え、smtps(465)もサポートしている。ただ、インターネット経由のsmtp(587)やsmtps(465)は、「スパム対策」と称する接続制限が施されている。
ぷらら Transix DS-Lite経由のメールアクセス エラーは、「スパムメール対策のブロック!」???
ぷらら Transix DS-Lite経由のメールアクセス IP blocking解消
確か、Transix DS-Liteがシステム拡張でIPv4アドレスを増強した時「ヨーロッパ割り当てのIPv4アドレス」を使用した事により、ぷららのメールサーバーに接続出来なくなったと推定している。再び同様の事が発生したかと
「ぷらら」メールサーバをopenssl s_clientで確認する-WiresharkでstartTLSも確認した
で確認したが、問題なかった。NVR510とNVR500でrt.mail()のいくつかのパラメータを変更して確認してみた。

(1)NVR510/NVR500のrt.mail()とぷららメールサーバー接続結果

NVR510(Rev.15.01.21) / NVR500(Rev.11.00.41)

(2)テストLUAスクリプト
plalamailtest.lua
--[[ May.5 '2022 Rabbit51 plalamailtest.lua ]]
mail_table = {
    timeout = 10,
	smtp_address = "secure.plala.or.jp",
	smtps = true,
	smtp_port = 587,
	smtp_auth_name = "someone@somewhere.plala.or.jp",
	smtp_auth_password = "FUSHIGINAKOTOBA",
	smtp_auth_protocol = "cram-md5",
	from = "someone@somewhere.plala.or.jp",
	to = "someone@somewhere.plala.or.jp",
	subject = "NVR510/NVR500 rt.mail() testing"
}
-- smtp w/ ssl on port 465 
mail_table.smtp_port = 465
mail_table.smtp_auth_protocol = "cram-md5"
mail_table.subject = "1 smtp w/ ssl port 465"
mail_table.text = "auth protocol = " .. mail_table.smtp_auth_protocol .. string.char(13,10)
rtn,str=rt.mail(mail_table)
rt.syslog("info"," subject= " .. mail_table.subject .. " smtp_auth_protocol = " .. mail_table.smtp_auth_protocol)
if rtn == false then rt.syslog("info","rt.mail() is false") else rt.syslog("info","rt.mail() is true") end
--
mail_table.smtp_auth_protocol = "digest-md5"
mail_table.subject = "2 smtp w/ ssl port 465"
mail_table.text = "auth protocol = " .. mail_table.smtp_auth_protocol .. string.char(13,10)
rtn,str=rt.mail(mail_table)
rt.syslog("info"," subject= " .. mail_table.subject .. " smtp_auth_protocol = " .. mail_table.smtp_auth_protocol)
if rtn == false then rt.syslog("info","rt.mail() is false") else rt.syslog("info","rt.mail() is true") end
--
mail_table.smtp_auth_protocol = "plain"
mail_table.subject = "3 smtp w/ ssl port 465"
mail_table.text = "auth protocol = " .. mail_table.smtp_auth_protocol .. string.char(13,10)
rtn,str=rt.mail(mail_table)
rt.syslog("info"," subject= " .. mail_table.subject .. " smtp_auth_protocol = " .. mail_table.smtp_auth_protocol)
if rtn == false then rt.syslog("info","rt.mail() is false") else rt.syslog("info","rt.mail() is true") end
-- smtps on port 587
mail_table.smtp_port = 587
mail_table.smtp_auth_protocol = "cram-md5"
mail_table.subject = "4 smtps port 587"
mail_table.text = "auth protocol = " .. mail_table.smtp_auth_protocol .. string.char(13,10)
rtn,str=rt.mail(mail_table)
rt.syslog("info"," subject= " .. mail_table.subject .. " smtp_auth_protocol = " .. mail_table.smtp_auth_protocol)
if rtn == false then rt.syslog("info","rt.mail() is false") else rt.syslog("info","rt.mail() is true") end
--
mail_table.smtp_auth_protocol = "digest-md5"
mail_table.subject = "5 smtps port 587"
mail_table.text = "auth protocol = " .. mail_table.smtp_auth_protocol .. string.char(13,10)
rtn,str=rt.mail(mail_table)
rt.syslog("info"," subject= " .. mail_table.subject .. " smtp_auth_protocol = " .. mail_table.smtp_auth_protocol)
if rtn == false then rt.syslog("info","rt.mail() is false") else rt.syslog("info","rt.mail() is true") end
--
mail_table.smtp_auth_protocol = "plain"
mail_table.subject = "6 smtps port 587"
mail_table.text = "auth protocol = " .. mail_table.smtp_auth_protocol .. string.char(13,10)
rtn,str=rt.mail(mail_table)
rt.syslog("info"," subject= " .. mail_table.subject .. " smtp_auth_protocol = " .. mail_table.smtp_auth_protocol)
if rtn == false then rt.syslog("info","rt.mail() is false") else rt.syslog("info","rt.mail() is true") end
-- smtp on port 587
mail_table.smtps = false
mail_table.smtp_port = 587
mail_table.smtp_auth_protocol = "cram-md5"
mail_table.subject = "7 smtp port 587"
mail_table.text = "auth protocol = " .. mail_table.smtp_auth_protocol .. string.char(13,10)
rtn,str=rt.mail(mail_table)
rt.syslog("info"," subject= " .. mail_table.subject .. " smtp_auth_protocol = " .. mail_table.smtp_auth_protocol)
if rtn == false then rt.syslog("info","rt.mail() is false") else rt.syslog("info","rt.mail() is true") end
--
mail_table.smtp_auth_protocol = "digest-md5"
mail_table.subject = "8 smtp port 587"
mail_table.text = "auth protocol = " .. mail_table.smtp_auth_protocol .. string.char(13,10)
rtn,str=rt.mail(mail_table)
rt.syslog("info"," subject= " .. mail_table.subject .. " smtp_auth_protocol = " .. mail_table.smtp_auth_protocol)
if rtn == false then rt.syslog("info","rt.mail() is false") else rt.syslog("info","rt.mail() is true") end
--
mail_table.smtp_auth_protocol = "plain"
mail_table.subject = "9 smtp port 587"
mail_table.text = "auth protocol = " .. mail_table.smtp_auth_protocol .. string.char(13,10)
rtn,str=rt.mail(mail_table)
rt.syslog("info"," subject= " .. mail_table.subject .. " smtp_auth_protocol = " .. mail_table.smtp_auth_protocol)
if rtn == false then rt.syslog("info","rt.mail() is false") else rt.syslog("info","rt.mail() is true") end
rt.mail(LUA api)仕様には、「port 587」でstartTLSに対応しているか不明なので、「smtps=true」と「smtps=false」の二通りで確認した。「smtps」「startTLS」は、wiresharkのパケットキャプチャで確認した。

(3)確認結果
・ぷららメールサーバは、「diget-md5」に対応していない。
・NVR500のrt.mail()は、smtps(465)に対応していない。smtpsが有効でない。
・NVR510は、startTLSに対応していない。仕様記載なしの通り。

NVR510とNVR500でrt.mail()スクリプトを共通にするには、
 if string.match(_RT_FIRM_REVISION,"(NVR%d+)") == "NVR510" then
    mail_table.smtp_port=465
else
    mail_table.smtp_port=587
end



 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする