AWS x postfix(メールサーバー構築)/ 外部転送編

AWSハンズオンセミナー

先日、Amazon ハンズオンセミナーで、

サーバー(EC2) x RDS x ロードバランサー

の構築の術を、3時間で学んできたのですが、
※と言っても、テキストを見ながら、コマンドを打ちこむだけなので、
実際には、どうなっているのかは、わかりにくいかもだけど、
たくさんの収穫!

でも、

今回は、メールサーバー構築のお話。

 

初めて触るに近いLinux(VPS)。
レンタルサーバーや、Windwos(xampp)とかでカンタンに構築できてしまうこともあり、
大昔に、触ってみたけど、実際に運用目的がなかったので、深入りはせず、
lsとか、カンタンなコマンドだけは知っている程度なので、

すべては手探りです!

***

まず、
AWS内のサービス「SES」を使ってみるが、
届いたメールはS3に保存されるだけで、
しっかり設定をすれば、可能なことが増えるようだが、

今回の目的「カンタンに」から、離れているため、

postfixを使ってみる。

POP3/IMAPを使うとなると、Dovecotというサービスが必要となりますが、
今回は、外部のメールサービス(gmail)に転送して、使いたいので、省略。

 

AWSでPostfixが使えるようにやること


やることは3つ。

  1. Route53にて、A、MXレコード作成
  2. セキュリティーグループにポートを追加
    1. POP3 / 110
    2. IMAP / 143 (不要かも?)
    3. SMTp / 25
  3. postfixインストールと設定

***

今回ハマったのは、その設定。

あたりを見てもらえば、インストール・設定までは、できるはず。

今回、gmailにすべてのメールを転送するので、
変更した箇所は、

inet_interfaces = localhost >?inet_interfaces = all

だけ。

本来なら、mydomainなども、設定が必要ですが、
マルチドメインで運用するので、省略

 

外部のメールサーバーに転送(マルチドメイン対応)


基本は、この2箇所の参考先の通りですが、

変更箇所は、

# /etc/postfix/main.cf

virtual_alias_domains = abc.com xyz.com
virtual_alias_maps = hash:/etc/postfix/virtual

と、

# /etc/postfix/virtual

[email protected] admin_abc_comgmail.com
[email protected] [email protected]

入れ終わったら、テーブルとエイリアスの反映を行い、再起動。

 sudo postmap /etc/postfix/virtual
sudo newaliases
sudo service postfix restart

***

まず、メールが届かないことには、SSLの認証も出来ず
メールが届かない、届かないと、1日明け暮れたので、

postfix gmail 転送

このメールが届いた時には、

キタ━━━━━━━━m9( ゚∀゚)━━━━━━━━!!

と、大いに感動!!

***

あとは、Coudfrontとの格闘です。
どうも、Round53の設定が間違っているのか?、エラーが出るのですよね。


PS. 覚え書き

サブドメイン名付きメールアドレスで、受信するには?!

[ 参考 ]

[ やったこと ]

  • サブドメインにも、MX追加(ec.xyz.com MX 10?mail.xyz.com)
  • mail.xyz.comは、固定IP に(ELBだと、ダメだった)
  • virtual_alias_domains に、サブドメインの指定(必要か?)
  • /etc/postfix/virtual に、サブドメイン付きメアドを追加。

とりあえず、受信できたので、
次に取得するドメインで、1つずつ除外して、検証してみます。

-

OLE制御(OpenOffice Calc vs. Ms Excel)

Microsoft Office(Excel)のライセンスが、ややこしいので、
OpenOffice(Calc)を検討。
※ライセンス問題については、後述

***

安牌を取るなら、既に出来上がっているExcelで良かったんだけど、
テストは?、ということ、これからの部分。

なので、Calcが登場するチャンスはまだあったわけで、

Excelで出来たことを、Calcで
どのように処理するか、を、まとめました。

OLE


Excelは、Delphiにコンポーネントがあるのと、
デモプログラムなんかで、割りとカンタンにOLE制御可。

Calcの唯一の資料は、
http://edn.embarcadero.com/jp/article/40857/images/40857/b5.pdf

Excel OLEでも同じだが、CalcをOLE制御するにあたり、
それ以降は、他の言語の解説を流用して、記述するしかない。
(言語毎の書き方が違うだけで、基本同じ)

非表示(パラメーターを指定して、ファイル読み込む)

 vP := VarArrayCreate([0, 0], varVariant);
 vP[0] := vOpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
 vP[0].Name := 'Hidden'; // 非表示で起動
 vP[0].Value := true;

vStarDesktop.loadComponentFromURL('file:///' + xls_path, '_blank', 0, vP);

保存せずに終了(変更していない、ことにする)

vDoc.Modified := False;
vStarDesktop.terminate;

とか。

ExcelをCalcに移植


Calcは、

セルの指定が違う(左Excel/右Calc)
_設定!B1 >> _設定.B1

など、
一部変更が必要だったり、対応していない機能があるものの、

xlsのほとんど読み込める。

マクロは、ほとんど書き直す必要があるみたいだけど、
今回、マクロは多用していないが、

困ったことは、
Excelだとテキストボックスに「=B1」などと、
他のセルの値を指定できるのに対し、

Calsは出来ない・・・

テキストボックスをOLEで制御するしかないか?と、
いろいろ探したけど、見つからず。
途中で、テキストボックスの値を別のテキストボックスに書き出すサンプルを発見。

http://oooug.jp/faq/index.php?faq%2F5%2F20

ここに、デモがあったので、
DLして必要箇所を移植してみたけど、どうも動かず、

わかったことは、

フォーム・テキストボックスと
テキストボックスと、2種類ある!

デモでは、前者を使い、
Excelからの移植では、後者を使っていた。

 

プロパティーでセルの値を指定できたので、まず、1つ解決。

次に、印刷に反映できるか?、
だったけど、これも問題なく、基本的な移植が完了した!

そして残すは、

耐久テストだけ!

***

MsOfficeと、OpenOfficeのライセンス


ライセンス単位で、2つのPCにインストール出来るので、
3万円だとしても、1台あたり、半値で2台使える!

わけではなく、

ライセンス上、二人が使うことは出来ない。

※あくまで、サブ機にも入れていいよ、程度で、

2台に入れるのに、6万円は高いだろうという、配慮

 

多くの人が、無視して、二人で使っているだろうけど、
流石に、お客さんに推し進めることは出来ないため、

お客さんが、正当にお金を払ってくれればいいのですが、

どうせ、印刷するだけなので、
無駄でもあり、負担にもなります。

ということで、今回、ビジネスでも利用可能な

無料のOpenOfficeに移植した次第です。

参考 > OpenOfficeのライセンスについて

http://forest.watch.impress.co.jp/docs/serial/moritalk/536026.html

今回使ったのは、Apache OpenOfficeなので、Apache Licenseになり、
LibreOfficeは、GNU Lesser General Public Licenseとなり、

※共に、同じOpenOfficeの派生系

開発レベルでいうと、
いろいろと問題があるけど、

個人・団体利用、商用・非商用に関係なく
無償利用が許可されている。

が、寄付をさせて頂く予定。

http://www.openoffice.org/ja/

-