Home 暗号プロセッサ OpenICF3


SendmailのないレンタルサーバにSendmailを

ホームページにメールを送信する機能を追加しようと思ったが、Sendmailのないレンタルサーバで困った ということはあまりないかもしれないが、ssmtpを使えば大丈夫。ssmtpは、Sendmailのメールの代替が 可能なメール送信ソフトだ。設定が非常に簡単でSSL接続もできるためGmailを使ったメールの送信に 利用できます。


ssmtpのスタティックコンパイル

ssmtpのバイナリをダウンロードしても、レンタルサーバーにssmtpがリンクしている シェアードライブラリがあるかどうかわからない。したがってssmtpのソースコードを ダウンロードしてスタティックコンパイルをする。スタティックコンパイルをするにあたって、 このサイトの情報が役に立った。 しかしそれでもssmtpは最後までスタティックコンパイルすることはできなかった。 結局、スタティックリンクとシェアードリンクを混在させてコンパイルする方法で切り抜けた。 スタティックリンクライブラリが参照している関数を、明示的にシェアードライブラリをリンクさせる ことでなんとかなるようだ。


実際に試したコンパイル環境

CentOS5.10のx86_64版、ssmtpはVer2.64、次のURLからダウンロードした。

https://packages.debian.org/source/sid/ssmtp

ssmtpのMakefileの修正

configureのオプションは、SSLを使うため次のオプションを設定した。

./configure --prefix=/home/xxx --enable-ssl

--prefixオプションで、自分がアクセス可能なディレクトリを指定するのを忘れないように。

できたMakefileを次のように修正


ssmtp: $(OBJS)
        $(CC) -o ssmtp $(OBJS) /usr/lib64/libnsl.a  /usr/lib64/libssl.a 
                           /usr/lib64/libcrypto.a  -lkrb5 -lz  $(CFLAGS)

注)ページの都合で改行がはいっているので注意してください。

ssmtpの設定ファイルの設定

Gmailでの例だが、2つの設定ファイルを次のように設定する。revaliasesのほうは、デフォルトのまま

ssmtp.conf


#
# /etc/ssmtp.conf -- a config file for sSMTP sendmail.
#
root=hogehoge@gmail.com
mailhub=smtp.gmail.com:587
AuthUser=hogehoge@gmail.com
AuthPass=(hogehogeのパスワード)
UseSTARTTLS=YES

revaliases


# sSMTP aliases
# 
# Format:	local_account:outgoing_address:mailhub
#
# Example: root:your_login@your.domain:mailhub.your.domain[:port]
# where [:port] is an optional port number that defaults to 25.

この2つのファイルとコンパイルしたssmtpをレンタルサーバにコピーするだけで終わり

--prefixで、/home/xxxとした場合は、/home/xxx/etc/ssmtpに2つの設定ファイルを置き、 実行ファイルのssmtpは、どこでもいい。

テストメールの送信

次のようなテキストファイルを作り、ssmtpを使ってテストメールを送信してみましょう。


To: test_address@xxx.ne.jp
From: hogehoge@gmail.com
Subject: TEST

TEST

CGIを使わず、SSH接続できるなら、次のようなコマンドを実行します。


./ssmtp -t < (作ったテキストファイル)




AdMax広告