• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Postfixで送信ができない)

Postfixで送信ができない

このQ&Aのポイント
  • /var/log/syslogでPostfixのエラーメッセージが表示されています。saslpasswd.dbファイルが存在しないため、何らかのコマンドを実行する必要があります。
  • /etc/postfix/main.cfファイルを確認すると、smtp_sasl_password_mapsパラメータでsaslpasswdファイルを参照していることが分かります。
  • smtpのエラーに関しては具体的な情報が提示されていないため、解決策を特定するためには参考サイトなどを参照する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • Lean
  • ベストアンサー率72% (435/603)
回答No.8

>smtp_sasl_security_options = >に変えたのですが同じエラーでした。 変更後、postfix reloadは実行しましたか? これでうまく行くか分かりませんが、main.cfに smtp_sasl_security_options = noanonymous smtp_sasl_mechanism_filter = plain, login の設定(上修正と下追加)をして、設定ファイルの際再読み込み(postfix reload)をして再度メールを送信した場合にはどうですか?

参考URL:
http://www.postfix.org/SASL_README.html#client_sasl

その他の回答 (7)

  • Lean
  • ベストアンサー率72% (435/603)
回答No.7

>make makefilesでno.2の回答の補足でお書きになったCCARGS、AUXLIBS共に指定していますか? 念のため書いておくと make makefiles CCARGS="-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/local/include/sasl" AUXLIBS="-L/usr/local/lib -lsasl2" です。

sc_staff
質問者

補足

付け加えるとできました。 たぶん最後の問題となるSASLのエラーです。 postfix/smtp[23573]: [ID 947731 mail.warning] warning: SASL authentication failure: No worthy mechs found postfix/smtp[23573]: [ID 197553 mail.info] A2AAC3AB17: to=<aaa@hogehoge.co.jp>, relay=mail.hogehoge.co.jp[999.999.999.999]:587, delay=1388, delays=1388/0.05/0.09/0, dsn=4.7.0, status=deferred (SASL authentication failed; cannot authenticate to server mail.hogehoge.co.jp[999.999.999.999]: no mechanism available ということでtelnetをすると Trying 999.999.999.999... Connected to mail.hogehoge.co.jp (999.999.999.999). Escape character is '^]'. 220 mail.hogehoge.co.jp ESMTP Postfix EHLO aaaa 250-mail.hogehoge.co.jp 250-PIPELINING 250-SIZE 5120000 250-VRFY 250-ETRN 250-AUTH PLAIN LOGIN 250 8BITMIME だったため、MD5類が不可だろうと思い、 smtp_sasl_security_options = に変えたのですが同じエラーでした。 sasl自体に何かコマンドを入れて作り直さないといけないような話もあるのですがどうすればよいのでしょうか??

  • Lean
  • ベストアンサー率72% (435/603)
回答No.6

-------8<-------8<-------8<-------8<-------8<-------8<-------8<------- gcc -Wmissing-prototypes -Wformat -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/local/include/sasl -Dstrcasecmp=fix_strcasecmp -Dstrncasecmp=fix_strnasecmp -g -O -I. -I../../include -DSUNOS5 -o smtpd smtpd.o smtpd_token.o smtpd_check.o smtpd_chat.o smtpd_state.o smtpd_peer.o smtpd_sasl_proto.o smtpd_sasl_glue.o stpd_proxy.o smtpd_xforward.o smtpd_dsn_fix.o smtpd_milter.o ../../lib/libmaster.a ../../lib/libtls.a ../../lib/libdns.a ../../lib/libxsasl.a ../../lib/libmilter.a ./../lib/libglobal.a ../../lib/libutil.a -lresolv -lsocket -lnsl -------8<-------8<-------8<-------8<-------8<-------8<-------8<------- これで全部ですか? Cyrus SASLライブラリ(-L/usr/local/lib -lsasl2)の指定がないですね。 これだとシンボル参照エラーになりますね。 make makefilesでno.2の回答の補足でお書きになったCCARGS、AUXLIBS共に指定していますか?

  • Lean
  • ベストアンサー率72% (435/603)
回答No.5

Cyrus SASLのライブラリにある関数がシンボル参照エラーになっているみたいですね。 ちなみにシンボル参照エラーになる前にsmtpdのリンクを行っているところ(-o smtpdがあるところ)があると思うのですが、その部分を出す事はできますか?

sc_staff
質問者

補足

gcc -Wmissing-prototypes -Wformat -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/local/include/sasl -Dstrcasecmp=fix_strcasecmp -Dstrncasecmp=fix_strnasecmp -g -O -I. -I../../include -DSUNOS5 -o smtpd smtpd.o smtpd_token.o smtpd_check.o smtpd_chat.o smtpd_state.o smtpd_peer.o smtpd_sasl_proto.o smtpd_sasl_glue.o stpd_proxy.o smtpd_xforward.o smtpd_dsn_fix.o smtpd_milter.o ../../lib/libmaster.a ../../lib/libtls.a ../../lib/libdns.a ../../lib/libxsasl.a ../../lib/libmilter.a ./../lib/libglobal.a ../../lib/libutil.a -lresolv -lsocket -lnsl 未定義の 最初に参照している ここらへんでしょうか??

  • Lean
  • ベストアンサー率72% (435/603)
回答No.4

make tidy してから、再度make makefiles ~ を実行したらどうですか? ところでNo.3の参考URLのページみましたか? Building Postfix with Cyrus SASL supportの所で、 % make tidy # if you have left-over files from a previous build とあります。

sc_staff
質問者

補足

毎回tidyしてからmake makefiles~~をしてmakeしてmake installの順番でしています。 今も再度やってみましたが同じエラーです。

  • Lean
  • ベストアンサー率72% (435/603)
回答No.3

>CCARGS="-DUSE_SASL_AUTH -I/usr/local/include/sasl" CCARGS="-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/local/include/sasl"

参考URL:
http://www.postfix.org/SASL_README.html#build_postfix
sc_staff
質問者

補足

make時に 未定義の 最初に参照している シンボル ファイル sasl_errstring ../../lib/libxsasl.a(xsasl_cyrus_server.o) sasl_decode64 ../../lib/libxsasl.a(xsasl_cyrus_server.o) sasl_server_start ../../lib/libxsasl.a(xsasl_cyrus_server.o) sasl_version_info ../../lib/libxsasl.a(xsasl_cyrus_server.o) sasl_server_new ../../lib/libxsasl.a(xsasl_cyrus_server.o) sasl_listmech ../../lib/libxsasl.a(xsasl_cyrus_server.o) sasl_done ../../lib/libxsasl.a(xsasl_cyrus_server.o) sasl_getprop ../../lib/libxsasl.a(xsasl_cyrus_server.o) sasl_encode64 ../../lib/libxsasl.a(xsasl_cyrus_server.o) sasl_server_step ../../lib/libxsasl.a(xsasl_cyrus_server.o) sasl_server_init ../../lib/libxsasl.a(xsasl_cyrus_server.o) sasl_setprop ../../lib/libxsasl.a(xsasl_cyrus_server.o) sasl_dispose ../../lib/libxsasl.a(xsasl_cyrus_server.o) ld: 重大なエラー: シンボル参照エラー。smtpd に書き込まれる出力はありません。 collect2: ld returned 1 exit status *** Error code 1 make: Fatal error: Command failed for target `smtpd' Current working directory /postfix-2.3.3/src/smtpd *** Error code 1 make: Fatal error: Command failed for target `update' となります。 パスが違うだけの問題なのでしょうか??

  • Lean
  • ベストアンサー率72% (435/603)
回答No.2

>できた形式がdbではなかったのでdbm(だっけ?)で設定変えて動きました。 デフォルトのデータベース形式が dbm なんですかね。 例) デフォルトのデータベース形式の確認方法 # postconf -d | grep default_database_type default_database_type = hash >ただまだ問題はあって「aaa@bbb」と送ったはずが >「aaa@bbb.localhost」と勝手にlocalhostがmailqを打つとついているのが確認されました。 Postfixのドキュメントには、ドメインのないアドレスはサポートしていないと書かれています。 そのため、bbbの部分をホスト名と思い、足りないドメイン部分(mydomain)を追加しているのだと思います。 なのでご希望の事は設定上可能ですが、Postfixのドキュメント通りだとドメインがないアドレスになりますので正常にメールを送れない可能性があります。 参考URL Postfix Configuration Parameters Postfix main.cf file format append_at_myorigin と append_dot_mydomain http://www.postfix.org/postconf.5.html#append_at_myorigin 以下、日本語訳 Postfix設定パラメータ Postfix main.cf ファイルフォーマット append_at_myorigin と append_dot_mydomain http://www.kobitosan.net/postfix/trans-2.2/jhtml/postconf.5.html#append_at_myorigin >myoriginを消したりもしたのですが・・ これコメントアウトのようにした場合なら、myoriginの規定値は$myhostnameなのでこれが設定されている事になります。

sc_staff
質問者

補足

内部で動作確認ができないということでちゃんとしたドメイン名つきのアドレスにしたら postfix/smtp[13906]: [ID 947731 mail.warning] warning: unsupported SASL client implementation: cyrus postfix/smtp[13906]: [ID 947731 mail.crit] fatal: SASL library initialization となりました。googleで調べた結果make時のパスに問題があるという情報にたどり着いたのですが、 make makefiles CCARGS="-DUSE_SASL_AUTH -I/usr/local/include/sasl" AUXLIBS="-L/usr/local/lib -R/usr/local/lib -lsasl2" でやっても動きません。何かおかしいのでしょうか? 以下、必要そうなファイルのパス? #ls /usr/local/lib/ libdb-4.4.a libdb-4.4.la libdb-4.4.so libdb-4.so -> libdb-4.4.so libdb.a libdb.so -> libdb-4.4.so libsasl2.la libsasl2.so -> libsasl2.so.2.0.22 libsasl2.so.2 -> libsasl2.so.2.0.22 libsasl2.so.2.0.22 sasl2(ディレクトリ) #ls /usr/local/lib/sasl2 libanonymous.la libanonymous.so -> libanonymous.so.2.0.22 libanonymous.so.2 -> libanonymous.so.2.0.22 libanonymous.so.2.0.22 libcrammd5.la libcrammd5.so -> libcrammd5.so.2.0.22 libcrammd5.so.2 -> libcrammd5.so.2.0.22 libcrammd5.so.2.0.22 libdigestmd5.a libdigestmd5.la libgssapiv2.la libgssapiv2.so -> libgssapiv2.so.2.0.22 libgssapiv2.so.2 -> libgssapiv2.so.2.0.22 libgssapiv2.so.2.0.22 libotp.a libotp.la libplain.la libplain.so -> libplain.so.2.0.22 libplain.so.2 -> libplain.so.2.0.22 libplain.so.2.0.22 libsasldb.la libsasldb.so -> libsasldb.so.2.0.22 libsasldb.so.2 -> libsasldb.so.2.0.22 libsasldb.so.2.0.22 #ls /usr/local/include/sasl hmac-md5.h md5.h md5global.h prop.h sasl.h saslplug.h saslutil.h

  • Lean
  • ベストアンサー率72% (435/603)
回答No.1

>saslpasswd.dbにするために何かコマンドを打つ必要があるのでしょうか? postmapコマンドでデータベースを生成しないといけません。 main.cfファイル内で >smtp_sasl_password_maps = hash:/etc/postfix/saslpasswd と指定されているようですので # postmap hash:/etc/postfix/saslpasswd でsaslpasswd.dbが生成されると思います。 >また、後に出ているsmtpのエラーがよくわかりません ○ログ 1行目 saslpasswd.db がない事が smtp にとっては [ID 947731 mail.crit] とあるようにログの重要度が crit(critical) つまり 致命的なエラー。 ○ログ 2行目 ログ1行目の致命的なエラーを受けて smtp が終了ステータス1で終了したとこをpostfixに関係するプログラムを起動するpostfixマスタープロセスのmasterがログに出力。 ○ログ 3行目 ログ 2行目のsmtpの終了を受けて postfixマスタープロセスのmasterが smtp を起動出来なかった(=postfixを起動出来なかった)旨のログを出力。 と言った感じでしょうか。

sc_staff
質問者

お礼

すみません。質問してからすぐ思い出してコマンド打ちました。 できた形式がdbではなかったのでdbm(だっけ?)で設定変えて動きました。 ただまだ問題はあって「aaa@bbb」と送ったはずが 「aaa@bbb.localhost」と勝手にlocalhostがmailqを打つとついているのが確認されました。 それが理由で(?)キューにたまったままです・・ どうやらmydomainをかえるとlocalhostの部分が変わったので関係しているのはわかったのですが、勝手に末尾に付くこと事態を避けたいので方法がわからない状態です。 myoriginを消したりもしたのですが・・

関連するQ&A