ユーザhogeの所属グループを調べるには、次のidコマンドを使う。
$ id hoge uid=1000(hoge) gid=1000(hoge) 所属グループ=1000(hoge),24(cdrom),29(audio),115(netdev)
Linuxユーザの立場から、役立つ情報や困ったときの解決方法を分かりやすく、かつ簡潔に記事にまとめています。主に、Ubuntu 8.04(→9.04)やCentOS 5.2(→5.3)で確認したことですが、他のディストリビューションでも応用できると思います。内容は(1)設定ファイルの書き方(2)役立つソフトウェア紹介やインストール方法(3)便利なコマンドの使い方や活用例(4)困ったときの解決方法です。このページの末尾にキーワード別で記事を分類してあります。また、真上の「ブログ検索」フォームからブログ内の記事を検索できます。
ユーザhogeの所属グループを調べるには、次のidコマンドを使う。
$ id hoge uid=1000(hoge) gid=1000(hoge) 所属グループ=1000(hoge),24(cdrom),29(audio),115(netdev)
本記事では、自分で構築したメールサーバから、ISPのメールサーバに、メールをリレーする方法をまとめる。
試した環境は、構築したメールサーバ(postfix on centos 5.3)、ISPはeo光(メールサーバはSASL認証が必要、サブミッションポート使用)。以下のパッケージをインストールして、基本的な設定が済んでいることが前提(詳しくは、メールサーバ構築参照)。
cyrus-sasl-2.1.22-4 cyrus-sasl-lib-2.1.22-4 cyrus-sasl-plain-2.1.22-4 postfix-2.3.3-2.1.el5_2
SASL認証、OP25B、サブミッションポートなどの情報は以下を参照のこと
メールサーバを自前で立てる場合、配送するメールは、他のメールサーバに中継してもらい、宛先に届けられる。近年は、メールスパム対策のため、メール転送に利用される25番ポートを制限されるようになった。その代替ポートとして587番が使われ、他のサーバに中継してもらうには認証が必要になるというもの。
今回は、自前で立てたメールサーバはクライアントとして、他のメールサーバにメールを中継してもらう場合を扱う。他のメールサーバやメールクライアントからのメールを中継する機能を持たせることもできるが、扱わない。後者の場合は、自前で立てたメールサーバは、SASL認証のメールサーバということになるが、今回は扱わない。あくまで、今回は(ISPの提供する)SASL認証のメールサーバに、メール中継を依頼するメールサーバの設定についてである。
まず、認証に必要になるアカウント、パスワードの設定ファイル(/etc/postfix/sasl_passwd)を作成する。次のような書式にする。
saslauth.xxx.jp:587 foo.baa:hoge
saslauth.xxx.jpはISPのSMTPサーバで、587はそのポートである。foo.baaはアカウント名で、hogeはパスワードである。eo光では、saslauth.eonet.ne.jpの587ポートである。アカウント名は、POP IDにする(@の前の部分かと勘違いしていたが、そうではなくても、POP ID=受信メールアカウントなるものが存在して、xxxx%yyy.eonet.ne.jpというフォーマットであるので、要注意!)。パスワードは、POPパスワードである。
生パスワードを書き込んでいるので、パーミッションと所有権を変更しておく。そして、これをデータベースに登録する。
# chmod 600 /etc/postfix/sasl_passwd # chown root. /etc/postfix/sasl_passwd # ls -l /etc/postfix/sasl_passwd -rw------- 1 root root 60 Jun 18 00:00 /etc/postfix/sasl_passwd # postmap /etc/postfix/sasl_passwd
次に、postfixの設定ファイル(/etc/postfix/main.cf)を編集して、saslauthの設定を書き込む。ここで、上の「注意点」で触れたことに注意。sasl認証メールサーバを構築の場合はsmtpd_sasl....(dが付いている)というパラメタを設定する必要があるが、ここではsmtp_sasl...(dが付いていない)であることに注意!また、relayhostの部分は、自分が利用しているISPで指定されているメールサーバにすること。
relayhost=smtpauth.eonet.ne.jp:587 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_sasl_mechanism_filter = plain, login, cram-md5
smtp_sasl_mechanizm_filterの部分は、OP25B対策で説明されているように、telnetでrelayhostに接続して確認するという良い。
# telnet smtpauth.eonet.ne.jp 587 Trying xxx.xxx.xxx.xxx... Connected to smtpauth.eonet.ne.jp (xxx.xxx.xxx.xxx). Escape character is '^]'. EHLO smtpauth.eonet.ne.jp <---入力 250-PIPELINING 250-SIZE 20000000 250-ETRN 250-AUTH CRAM-MD5 LOGIN PLAIN 250-AUTH=CRAM-MD5 LOGIN PLAIN <---確認 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN QUIT
次に、設定ファイル/etc/postfix/master.cfで、次の部分をコメントアウトする。
submission inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject
後は、postfixをリロードして、どこかにメールを送ってみて、届くかどうか確認する。
# /etc/rc.d/init.d/postfix reload Reloading postfix: [ OK ] # mail xxx@gmail.com Subject: test test . Cc: # tail /var/log/maillog ....
本記事では、socksプロキシ経由で、リモートホストにSSH接続する方法をまとめる。
試した環境の詳細は、以下の図のように、LAN内にあるクライアント(Ubuntu 9.04 on ThinkPad X31)で、Socksサーバ(Socks5プロトコル、認証なし)を経由して(LANを出て)、リモートホスト(centOS 5.3 on ThinkCentre S50)にSSH接続した。
使用したsshは、以下の通り。
$ ssh -v OpenSSH_5.1p1 Debian-5ubuntu1, OpenSSL 0.9.8g 19 Oct 2007
まず、以下のファイルを作成して、~/.sshにconfigという名前で配置する(無ければ、.sshディレクトリを作成する)。リモートホスト(foo.bar.net)のhogeというアカウントに、SOCKSサーバ(socks-proxy.xxx.jpの1080ポート、認証なし)を経由して、SSH接続することを意味している。foo.bar.net.socksは、このプロファイルのための名称なので、この通りでなくても良い。
Host foo.bar.net.socks HostName foo.bar.net User hoge Port 22 ProxyCommand /usr/bin/connect -a none -S socks-proxy.xxx.jp:1080 %h %p
ちなみに、connectがなければインストールする。connectは、SOCKS4あるいは5、httpトンネルを使って、TCP接続を確立するためのツールである。
$ sudo apt-get install connect-proxy
Ubuntu 9.04では、デフォルトで/usr/binに実行ファイルが配置されるので、上のconfigファイルにはそのように書いてある(そうでないならば変更すること)。
$ which connect /usr/bin/connect
connectコマンドの詳細は、SSH Proxy Command -- connect.cを参照のこと。
当然、リモートホストには、hogeというアカウントが存在し、かつ、sshによる接続が許可されていなければならない。うまくいかないときは、iptables、tcp wrapperなどでアクセス制限がされていないか確認すること。また、sshdが動いていることも大前提。また、クライアントはSSH接続するとき、デフォルトで~/.ssh/configを読み込むが、システムによってはそうでないかもしれない(/etc/ssh/ssh_configを参照のこと。sshd_configと間違えないように!)。
今回は、RSA認証でリモートホストにSSH接続するので、その設定もできていること(詳細は、SSHサーバの設定を参照のこと)。
以上の準備の下で、次のコマンドを実行し、SSH接続を確立する。
$ ssh foo.bar.net.socks
以下に参照サイトを列挙する。
ssh接続を試みたときに、以下のようなエラーが出て接続できないことがあったので、その原因を書いておく。
# ssh hoge@foo.bar.net @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Please contact your system administrator. Add correct host key in /root/.ssh/known_hosts to get rid of this message. Offending key in /root/.ssh/known_hosts:25 RSA host key for xxxxxxx has changed and you have requested strict checking. Host key verification failed.
接続先ホストは以前、ssh接続をして作業していたマシン。このマシンのOSを再インストールして、再びssh接続してみようと試みていた。以前の情報が接続元ホストの~/.ssh/known_hostsに残っていて、今回、同一の接続先ホストなのに情報が異なる!といってエラーが出ていた模様。したがって、接続元ホストの~/.ssh/known_hostsを削除して、接続を試みると問題が解決された。
本記事では、centOSでyum updateをするとiterable argument requiredなどというエラーの解決策をまとめる。
ネットで調べてみると、yum clean allやrpm --rebuilddbなどをすると良いとか、yum関連のパッケージを削除して、再インストールしてみると良いなどといった情報があった。これらを試してみたがダメだった。
ところが、Fedora JP BBSに載っていた情報に従うと解決した。それに依れば、http_proxyの環境変数の設定を適切に直すと良いというものだった。
http_proxy="proxy.xxx.net:8080"などと.bashrcで登録していたが、http_proxy="http://proxy.xxx.net:8080"に直すとうまくyum updateできた!
お気に入りのWebサイト(一部、外部サイト)へのリンクの一覧です。