なぜか、Amazon LiunxのデフォルトのMTAはSendmail。ま、ベースとなっているRHELのデフォルトのMTAがSendmailだからなんだろうな、いやはや。最近はPostfixしか使っていないので、AmazonLinuxでサーバを構築する際は、まずはsendmailをアンインストールして、Postfixに入れ替えるという作業を行うことになる。

AmazonLinuxのサーバをオフィシャルなAMIから構築する場合には、sudo yum remove sendmailでsendmailをアンインストールして、sudo yum install postfixすれば、MTAの交換ができてしまうのだが、sendmailに依存するパッケージに「crontabs.noarch」があったりするのがちょっと…。ま、postfixを入れた後、再インストールすればいいわけだけど、うっかりわすれるとcronが動かなかったりする。「このサーバではログのローテーションが実行されないなー、不思議だなー」とか思っていると、MTA入れ替え後の「crontabs.noarch」の再インストールを忘れているってことがある(遠い目)

…で、こちらの記事「yumで複雑に依存しあった複数のパッケージを入れ替える」によると、yumはsendmailのアンインストールとpostfixのインストールを1つのトランザクションとして依存性を解決することができるらしい。

まずは、yumのシェルを起動。削除したいものとインストールしたいものを指定。その後、依存性の解決を行った後、で、そのトランザクションを実行という流れらしい。

sudo yum shell

remove (パッケージ名)
install (パッケージ名)
transaction solve
transaction run

試しに、sendmailをremoveして、postfixをinstallしてトランザクションの依存性を解決してみたが、sendmailに依存しているcrontabsなどは削除されることなく、そっとsendmailがアンインストールされ、postfixが必要とするmysql55-libとspostgresql92-libsと一緒にpostfixがインストールされた。

…って、これはAmazonLinuxに限ったことではなく、yumが使えるRHEL系のLinuxなら同じ事ができますね、はい。