# Discourse-setup が SMTP ユーザー名の / で失敗する

**URL:** <https://meta.discourse.org/t/discourse-setup-fails-on-smtp-username-with-a/272514>\
**Category:** Bug\
**Tags:** pr-welcome\
**Created:** [2023 年 7 月 22 日午後 4:23 UTC](https://meta.discourse.org/t/discourse-setup-fails-on-smtp-username-with-a/272514 "2023-07-22T16:23:44Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![hellekin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/hellekin/32/51636_2.png) [@hellekin](https://meta.discourse.org/u/hellekin)\
**Post date:** [2023 年 7 月 22 日午後 4:23 UTC](https://meta.discourse.org/t/discourse-setup-fails-on-smtp-username-with-a/272514/1 "2023-07-22T16:23:44Z")

</div>

[StandaloneコンテナからWebコンテナとデータコンテナを分離する](https://meta.discourse.org/t/move-from-standalone-container-to-separate-web-and-data-containers/29413)からの議論を続けます。

## バグの説明

`discourse-setup`を実行する際に、SMTPユーザー名に`/`が含まれていると、スクリプトが失敗します。

> sed: -e 式 #1, 文字 74: sed の不正なオプションです  
> DISCOURSE\_SMTP\_USER\_NAME の変更に失敗しました。

## 期待される動作

SMTPユーザー名に`/`が含まれている場合でも受け入れられるべきです。

`/`は、[RFC3696](https://datatracker.ietf.org/doc/html/rfc3696#section-3)によると、SMTPユーザー名の有効な文字です。

> 引用符なしの場合、ローカルパートは、
> 
> ! # $ % & ’ \* + - / = ? ^ \_ ` . { | } ~
> 
> のいずれかの英数字または特殊文字の組み合わせで構成できます。

## 修正パス

スクリプトは、デフォルトで区切り文字として`/`を使用する`sed`コマンドで失敗します。  
コロン（`:`）は電子メールアドレスの`local-part`の有効な文字ではないため、`/`の代わりにコロンを使用できます。他の文字（カンマやセミコロンなど）がもたらす副作用はありません（ただし、`sed`パターン内のコロンはエスケープする必要があります。`]`を使用すると、コロンのエスケープが不要になります）。

- 589行目：  
`smtp_domain=$(echo $notification_email | sed -e \"s/.*@//\")` は次のように変更する必要があります。  
`smtp_domain=$(echo $notification_email | sed -e \"s:.*@::\")`
- 648行目：`DISCOURSE_DEVELOPER_EMAILS`は電子メールアドレスを区切るために`,`を使用しているため、コロン（`:`）を安全に使用できます。
- 675行目：私のバグの原因です。  
`sed -i -e \"s/^ #\\?DISCOURSE_SMTP_USER_NAME:.*/ DISCOURSE_SMTP_USER_NAME: $smtp_user_name/w $changelog\" $web_file` は次のように変更できます。  
`sed -i -e \"s:^ #\\?DISCOURSE_SMTP_USER_NAME\\:.*: DISCOURSE_SMTP_USER_NAME\\: $smtp_user_name:w $changelog\" $web_file` または  
`sed -i -e \"s] #\\?DISCOURSE_SMTP_USER_NAME:.*] DISCOURSE_SMTP_USER_NAME: $smtp_user_name]w $changelog\" $web_file`
- 同様に684行目（`DISCOURSE_NOTIFICATION_EMAIL`）も同様です。

---

_[View the full topic](https://meta.discourse.org/t/discourse-setup-fails-on-smtp-username-with-a/272514)._
