zulip/zerver/lib
Cyril Pletinckx b7fa41601d emails: Truncate overly-long From fields for RFC compatibility.
Amazon SES has a limit on the size of address fields, and rejects
emails with too-long "From" combinations of name and address. This
limit is set to 320 bytes and comes from an RFC limitation on the
size of addresses. This RFC standard states that an email address
should not be composed of a local part (before the '@') longer than
64 bytes and a domain part (after the '@') longer than 255 bytes.
It is possible that Amazon SES misinterprets this limitation as it
checks the length of the combination of the name and the email
address of the sender.

To ensure that this problem is not encountered in the send_email
module of Zulip the length of this combination is now checked
against this limit and the from_name field is removed to only
keep the from_address field when it is necessary in order to
stay below 320 bytes.

If the from_address field alone is longer than 320 bytes the
sending process will raise an SMTPDataError exception.

Tests for this new check are added to the backend test suite in
order to test if build_email correctly outputs an email with filled
from_name and from_address fields when the total length is lower
than 320 bytes and that it correctly throws the from_name field
away when necessary.

Fixes: #17558.
2021-04-03 08:13:26 -07:00
..
markdown Revert "markdown: Add support to shorten GitHub links." 2021-04-02 15:52:34 -07:00
url_preview mypy: Correct typing.re imports to typing. 2021-03-17 18:41:46 -07:00
webhooks webhooks: Fix spelling of milliseconds. 2021-03-05 12:22:50 -08:00
__init__.py [manual] Rename Django app from zephyr to zerver. 2013-08-06 07:39:36 -04:00
actions.py support: Create RealmAuditLog when updating realm_subdomain. 2021-04-03 08:01:46 -07:00
addressee.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
alert_words.py python: Reformat with Black, except quotes. 2021-02-12 13:11:19 -08:00
attachments.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
avatar_hash.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
avatar.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
bot_config.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
bot_lib.py requirements: Upgrade python-zulip-api from Git. 2021-03-26 16:31:03 -07:00
bot_storage.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
bulk_create.py migrations: Subscription.is_user_active denormalization - step one. 2021-03-30 09:19:03 -07:00
cache_helpers.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
cache.py cache: Delete user_profile_by_email_cache_key. 2021-03-25 00:47:42 -07:00
camo.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
ccache.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
context_managers.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
create_user.py migrations: Subscription.is_user_active denormalization - step one. 2021-03-30 09:19:03 -07:00
data_types.py python: Reformat with Black, except quotes. 2021-02-12 13:11:19 -08:00
db.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
debug.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
dev_ldap_directory.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
digest.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
display_recipient.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
domains.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
email_mirror_helpers.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
email_mirror.py requirements: Upgrade talon fork to 1.4.8. 2021-03-18 17:10:18 -07:00
email_notifications.py docs: Add a document explaining email/push notifications. 2021-03-05 15:24:25 -08:00
email_validation.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
emoji.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
error_notify.py actions: Remove realm argument to internal_send_stream_message. 2021-02-23 15:26:47 -08:00
event_schema.py markdown: Include text & url in topic_links parameter of our API. 2021-03-30 15:53:07 -07:00
events.py events: Fix broken custom_profile_fields events logic. 2021-03-26 16:28:33 -07:00
exceptions.py api: Add REALM_DEACTIVATED error code. 2021-03-31 08:46:13 -07:00
export.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
external_accounts.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
fix_unreads.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
generate_test_data.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
github.py python: Reformat with Black, except quotes. 2021-02-12 13:11:19 -08:00
home.py js: Convert static/js/page_params.js to ES6 module. 2021-03-26 10:17:56 -07:00
hotspots.py hotspots: Add TUTORIAL_ENABLED setting to toggle INTRO_HOTSPOTS. 2021-03-30 14:46:42 -07:00
html_diff.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
html_to_text.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
i18n.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
import_realm.py support: Pass acting_user to do_change_plan_type. 2021-04-03 08:01:46 -07:00
initial_password.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
integrations.py integration: Add jotform integration. 2021-03-04 11:40:58 -08:00
logging_util.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
management.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
mdiff.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
mention.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
message.py message: Record whether unread_msgs data is truncated. 2021-03-21 19:48:13 -07:00
migrate.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
mobile_auth_otp.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
name_restrictions.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
narrow.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
onboarding.py actions: Remove realm argument to internal_send_private_message. 2021-02-23 15:26:47 -08:00
outgoing_webhook.py webhook: Catch potential JsonableError when parsing widget_content. 2021-03-31 13:31:42 -07:00
presence.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
profile.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
push_notifications.py docs: Add a document explaining email/push notifications. 2021-03-05 15:24:25 -08:00
pysa.py python: Sort imports with isort. 2020-06-11 16:45:32 -07:00
queue.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
rate_limiter.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
realm_description.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
realm_icon.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
realm_logo.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
redis_utils.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
remote_server.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
request.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
response.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
rest.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
retention.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
send_email.py emails: Truncate overly-long From fields for RFC compatibility. 2021-04-03 08:13:26 -07:00
server_initialization.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
sessions.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
soft_deactivation.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
sqlalchemy_utils.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
statistics.py python: Reformat with Black, except quotes. 2021-02-12 13:11:19 -08:00
storage.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
stream_subscription.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
stream_topic.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
streams.py streams: Add moderators option in stream_post_policy. 2021-03-30 09:06:20 -07:00
subdomains.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
test_classes.py refactor: Make acting_user a mandatory kwarg for bulk_remove_subscriptions. 2021-04-02 14:44:41 -07:00
test_console_output.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
test_data.source.txt docs: Capitalize Markdown consistently. 2020-08-11 10:23:06 -07:00
test_fixtures.py puppeteer_tests: Reset test environment after each run. 2021-03-25 12:58:36 -07:00
test_helpers.py docs: Add redirects for moved pages about stream archiving. 2021-04-02 22:08:15 -07:00
test_runner.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
tex.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
thumbnail.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
timeout.py timeout: Remove unnecessary varargs support. 2021-02-15 17:05:28 -08:00
timestamp.py python: Reformat with Black, except quotes. 2021-02-12 13:11:19 -08:00
timezone.py python: Reformat with Black, except quotes. 2021-02-12 13:11:19 -08:00
topic_mutes.py topic_mutes: Filter deactivated streams from get_topic_mutes. 2021-03-30 12:11:35 -07:00
topic.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
transfer.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
type_debug.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
types.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
unminify.py unminify: Fix lookup if source map does not exist in disk. 2021-03-16 14:46:18 -07:00
upload.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
url_encoding.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
user_agent.py python: Reformat with Black, except quotes. 2021-02-12 13:11:19 -08:00
user_groups.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
user_status.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
users.py custom profile fields: Rename "CHOICE" to "SELECT" in backend. 2021-03-24 12:54:51 -07:00
utils.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
validator.py custom profile fields: Rename "SELECT" field validator. 2021-03-24 12:54:51 -07:00
widget.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
zcommand.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
zephyr.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00