2020/08/29

CentOS の Postfix 2.6.6 で Outlook2016 の メール送信設定が出来ない問題


CentOSで、Postfix 2.6.6を設定し、メールアカウントを用意。
CentOS上から、メールの送信を確認したところで、
Windows の Outlook2016 に メール送信設定をしようとしたところ問題が発生。

念の為、他のメーラーで設定できるかの確認として、
Thunderbird で、設定を行ったところ、問題はなかった。

Outlook2016 でのエラー内容



Outlookの設定画面で、メールの送信設定を進めていくと

「554 5.7.1」

というエラーが発生。

Postfixのログ内容



CentOS側で、Postfixのログを確認したろころ、

-------------------------------------------------------
 Jun 8 19:27:12 localhost postfix/smtpd[24445]:
 NOQUEUE: reject: RCPT from ルルのホスト名[ルルのIP]:
 554 5.7.1 : Helo command rejected: Access denied;
 from=
 to=
 proto=ESMTP helo=
-------------------------------------------------------

「Helo command rejected: Access denied」
この内容が、エラーの詳細となっていた。

Helo コマンドとは?



Helo コマンドは、メールを送信する前に、ドメイン名を識別する役割をもっています。
通常、Heloコマンドで、ドメイン名が識別できない場合でも、
メールの送信には問題はないのですが、セキュリティ上の設定がある場合

Access denied(アクセスが拒否されました)となるのです。

Postfixの設定ファイルの確認



アクセス拒否がされているのであれば、原因は、設定ファイルにある可能性があるため

「main.cf」の「smtpd_helo_restrictions」を確認。

-------------------------------------------------------
 smtpd_helo_restrictions =
  permit_mynetworks,
  reject_invalid_hostname,
  check_helo_access regexp:/etc/postfix/helo_restrictions,
  permit
-------------------------------------------------------

スパム対策として、主に用いられる設定として、
「check_helo_access regexp:/etc/postfix/helo_restrictions,」
記述していた内容が問題だと判明。


Postfixの設定ファイルの修正内容



「main.cf」の「smtpd_helo_restrictions」部分を
以下のように変更

-------------------------------------------------------
 smtpd_helo_restrictions =
  permit_mynetworks,
  reject_invalid_hostname,
  reject_unknown_sender_domain,
  permit
-------------------------------------------------------


とはいえ、一般的な設定ってこれで良いのか?という疑問はあるものの、
設定ファイルを保存し、再起動したところ、エラーが出ずに、Outlookの設定も完了



まとめ



今回、未だに2.6.6 使ってるため、情報が古くあまり出てこなかったのですが、
解決までこぎつけたので一安心となりました。

参考になれば幸いです。

補足



「postfix 2.9.x」 や 「2.10.x」 の場合
554 5.7.1 になりやすいとのことで、
-------------------------------------------------------
 smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
-------------------------------------------------------
上記の設定を追加すると良いとのことでした。


2020/08/28

さくらのVPS for Windows Server(v5) に接続してみたら、ファイルのやり取りに戸惑った話

 さくらのVPS for Windows Server で、リモートデスクトップサービスも含めて
月額約3000円というリーズナブルな、おもちゃを契約してみた。

まぁ何をしたいのかといえば、自宅の自動スクリプト用のPCで起動しっぱなしだと
やっぱりあれなんです。

月額3000円くらい電気代かかるじゃなーい?www

それなら、リモートデスクトップで、Windows使えればいいじゃない!

という安直な考えの元、契約したわけです。


リモートデスクトップに関して言えば、契約して、Windows10標準の「リモートデスクトップ接続」を利用すれば普通につながったわけです。


なんだ~簡単じゃーんと思ってた時期が私にもありました。

ところで、Windows Server って、ファイルのやり取りどうすんの?

ってなるわけです。

FTPサーバー立ち上げんの?とかSSH接続とかでファイルやり取りすんの?
えっ?どうやって?

知らねぇwwwwww

つーか、CentOSとかLinux系サーバーしか触ってこなかったから
Windows Server なんて知らんわwwwwww

\(^o^)/


で、詰まるわけです。

ファイアウォールとかなんやねん
Windows Server 用の管理ツールとかよくわかんねぇえ

GUIなのにCUIのLinuxよりわかんねぇwwwww

書いてある内容がよくわかんないっていうなんやねん


で、色々しらべてたら

なんのことはなく、エクスプローラのアドレスバーから
\\tsclient
って入力すれば、アクセス元のPCのドライブに直接アクセスできるっていうwwwww


あほかwwww


その後は、IEからChromeのソフトをダウンロードしてインスト―・・・・

制限かかってインストールできなーい(・∀・)
IEの制限をなんやかんやと制限解除して、
Chromeのインストール完了

そして、Office365にアクセスして、Office関連のソフトをインストール!

これで、どこの環境からでも、使える作業PCが完成?www

ちなみに、回線速度をしらべたら
ダウン:90Mbps程度
アップ:110Mbps程度
と、案外問題無い感じにwwww

タスクマネージャー上のスペック的には
CPU:Intel Xeon Gold 6212U 2.40GHz
メモリ:2.0GB

まぁあんまりでかいファイルを開いたりとかはできないねw


とはいえ、自動スクリプトくらいならなんとかなりそうなので、OKでしょwww


というわけで、これから色々と遊んでみようと思う!以上!www


2020/02/29

お名前.comのレンタルサーバー RSプラン で cron を使った話

最近のお名前.comはレンタルサーバーがパワーアップして
RSプランというのが用意されました。

ドメイン登録数 無限!とか
SSLが無料で!とか
WordPress標準搭載!とか
まぁ色々と売り込みされているのです。

じゃあ、昔のSDプランと比べて何が違うのよ?
っていう話だと、

サーバーやってる人からすると一番大きいのはもちろん!

「SSH接続によるシェルログイン」が出来るかどうか!!!!
なわけですw


実際問題、
・SSL証明書が無料
・登録ドメイン数無限
・SSH接続可能
で、月1300円(まとめ払なら最大月900円まで割引)

なんていう値段設定のレンタルサーバーなんて他にないわけでwwww


じゃあ、「SSH接続によるシェルログイン」が出来ると
サーバーエンジニアなら、色々夢が広がるわけです。


その最たるものが、「cron」が使えるかどうか!


「cron」というのは、何かというと
スケジュールを設定して、自動で実行できるなんやかんやです

つまるところ、定期的に、自動実行してほしいものって結構あるんですよこれが・・・。


試しに、
「/home/r0000000/」(用意されているサーバーのルート)に「cron」ディレクトリを用意して

crontab -e で、cron設定に

* * * * * echo `date +"\%Y-\%m-\%d \%H:\%M:\%S"` >> /home/r0000000/cron/cron.log

を記述したところ・・・・。



ちゃんとログに書き込まれていってるーーーーーー。


* * * * * cd /home/r0000000/cron/; php test.php >> /home/r0000000/cron/test.log


って感じで、php(中身はechoするだけ)の実行もできるか確認したところ・・・・。


ちゃんとログに書き込まれていってるwwwwwww



その後、データベースへのアクセスとかcUrlを試したりしたけど
問題ナッシングだった。



つまり、「cron」使えますwww


値段にそぐわない、圧倒的な高性能だと感じてしまったwwww
もし、レンタルサーバーなやんでたら、お名前のRSプランを検討に入れてもいいと思いますよ~。

2020/02/28

一つのphpで処理するページで、.htaccessでスマホページに切り替えを入れようと思ってループにハマった話。

.htaccess の書き方がなんとなくしかわからない時
ネットで検索して、例文をコピペしてくるんですが、
今回は、「https://hogehoge.jp/」にアクセスしたとして
スマホでアクセスしたら
「https://hogehoge.jp/sp/」にアクセス出来るようにしたかったのです。

ですが、これをやる前に、
「https://hogehoge.jp/submenu/」にアクセスした場合
「https://hogehoge.jp/index.php?path=/submenu/」
として、一つのphpで、処理したかったので
----------------------
RewriteEngine on

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?path=$1 [NC,L,QSA]
----------------------

という内容にしていたのでした。

さらに、最後がファイル名じゃなかった時に
必ずスラッシュを入れたかったので

----------------------
RewriteEngine on

RewriteBase /

RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !\.[^/\.]+$
RewriteRule .* %{REQUEST_URI}/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?path=$1 [NC,L,QSA]
----------------------

こんな事になっており・・・。


スマホページでのリダイレクト方法としてよくでてくる

----------------------
RewriteCond %{REQUEST_URI} !/sp/
RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|Android.*Mobile|Windows.*Phone)
RewriteRule ^(.*)$ sp/$1 [L,R=301]
----------------------

を追加したところ

末尾に、無限ループで sp/sp/sp/sp/sp/.......

結果、「ERR_TOO_MANY_REDIRECTS」となってしまうという悲しみ

ここで、やっと、ちゃんと.htaccessの記述内容を調べることを思い立つわけです。

結論からいえば、

----------------------
RewriteEngine on

RewriteBase /

RewriteCond %{REQUEST_URI} !/sp/
RewriteCond %{REQUEST_URI} !/index.php
RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|Android.*Mobile|Windows.*Phone)
RewriteRule ^(.*)$ sp/$1 [L,R=301]

RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !\.[^/\.]+$
RewriteRule .* %{REQUEST_URI}/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?path=$1 [NC,L,QSA]
----------------------

とすれば良かったというあれなんです


RewriteCond %{REQUEST_URI} !/index.php


この一行の大事だったこと・・・。


ループの原因は、まず、
「https://hogehoge.jp/sp/」にアクセスした場合
「https://hogehoge.jp/index.php?path=/sp/」
にリダイレクトされます。

しかし、スマホの場合
「https://hogehoge.jp/index.php?path=/sp/」
でアクセスされると
「https://hogehoge.jp/sp/index.php?path=/sp/」
にリダイレクトされます。

でも、index.phpで処理をしたいので
「https://hogehoge.jp/index.php?path=/sp/sp/」
にリダイレクトしますwwww

はい。
無限ループの完成wwwwwwwwwww

なので、スマホのページの処理で
index.phpで処理する場合はリダイレクトしないようにするために
----------------------
RewriteCond %{REQUEST_URI} !/index.php
----------------------
を追加したということです。

あーややこしや。

そんな感じでしたww