

{"id":12657,"date":"2020-02-21T12:28:13","date_gmt":"2020-02-21T17:28:13","guid":{"rendered":"https:\/\/rud.is\/b\/?p=12657"},"modified":"2020-02-21T12:28:13","modified_gmt":"2020-02-21T17:28:13","slug":"bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m","status":"publish","type":"post","link":"https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/","title":{"rendered":"BIMI Up, Scotty! A look at Brand Indicators for Message Identification (BIMI) Adoption with R and the Alexa Top 1m"},"content":{"rendered":"<p>It seems that the need for MX, DKIM, SPF, and DMARC records for modern email setups were just not enough acronyms (and setup tasks) for some folks, resulting in the creation of yet-another-acronym &#8212; BIMI, or, Brand Indicators for Message Identification. The goal of BIMI is to <em>&#8220;provide a mechanism for mail senders to publish a validated logotype that mail receivers can display with the senders&#8217; messages.&#8221;<\/em> You can read about the <a href=\"https:\/\/tools.ietf.org\/id\/draft-bkl-bimi-overview-00.html\">rationale for BIMI<\/a> and the <a href=\"https:\/\/tools.ietf.org\/id\/draft-blank-ietf-bimi-00.html\">preliminary RFC for crafting BIMI DNS TXT records<\/a> over a few caffeinated beverages. I&#8217;ll try to TL;DR the high points below.<\/p>\n<p>The idea behind BIMI is to provide a visual indicator of the brand associated with a mail message; i.e. you&#8217;ll have an image to look at somewhere in the mail list display and\/or mail message display of your mail client if it supports BIMI. This visual indicator is merely an image URL association with a brand mail domain through the use of a new special-prefix DNS TXT record. Mail intermediaries and mail clients are only supposed to allow presentation of BIMI-record provided images after verifying that the email domain itself conforms to the DMARC standard (which you should be using if you&#8217;re an organization\/brand and shame on you if you&#8217;re not by now). In fact, the goal of BIMI is to help ensure:<\/p>\n<ul>\n<li>the organization is legitimate<\/li>\n<li>the domain names are controlled by the organization<\/li>\n<li>the organization has current rights to display the indicator<\/li>\n<\/ul>\n<p>When BIMI validation is being performed, the party requesting validation is currently authorized to do so by the organization and is who they say they are.<\/p>\n<p>If you&#8217;re having flashbacks to the lost era of when SSL certificates were supposed to have similar integrity assertions, you&#8217;re not alone (thanks, LE).<\/p>\n<h3>What&#8217;s Really Going On?<\/h3>\n<p>I&#8217;m not part of any working group associated with BIMI, I just measure and study the internet for a living. As someone who is as likely to use <a href=\"https:\/\/en.wikipedia.org\/wiki\/Alpine_(email_client)\">alpine<\/a> to peruse mail as I am a thick email client or (heaven forbid) web client, BIMI will be of little value to me since I&#8217;m not really going to see said images anyway.<\/p>\n<p>Reading through all the BIMI (and associated) RFCs, email security &amp; email marketing vendor blogs\/papers, and general RFC commentators, BIMI isn&#8217;t solving any problem that well-armored DMARC configurations aren&#8217;t already solving. It appears to be driven mainly by brand marketing wonks who just want to shove brand logos in front of you and have one more way to track you.<\/p>\n<p>Yep, tracking email perusals (even if it&#8217;s just a list view) will be one of the benefits (to brands and marketing firms) and is most assuredly a non-stated primary goal of this standard. To help illustrate this, let&#8217;s look at the BIMI record for one of the most notorious tracking brands on the planet, Verizon (in this case, Verizon Wireless). When you receive a BIMI-&#8220;enhanced&#8221; email from <code>verizonwireless.com<\/code> the infrastructure handling the email receipt will look for and process the BIMI header that was sent along for the ride and eventually query a TXT record for <code>default._bimi.verizonwireless.com<\/code> (or whatever the sender has specified instead of <code>default<\/code> &#8212; more on that in a bit). In this case the response will be:<\/p>\n<pre><code class=\"language-shell\">v=BIMI1; l=https:\/\/ecrm.e.verizonwireless.com\/AC\/Global\/Bling\/Images\/checkmark\/verizon.svg;\n<\/code><\/pre>\n<p>which means the image they want displayed is at that URL. Your client will have to fetch that during an interactive session, so your IP address &#8212; at a minimum &#8212; will be leaked when that fetch happens.<\/p>\n<p>Brands can specify something other than the <code>default.<\/code> selector with the email, so they could easily customize that to be a unique identifier which will &#8220;be you&#8221; and know when you&#8217;ve at least looked at said email in a list view (provided that&#8217;s how your email client will show it) if not in the email proper. Since this is a &#8220;high integrity&#8221; visual component of the message, it&#8217;s likely not going to be subject to the &#8220;do not load external images\/content&#8221; rules you have setup (you do view emails with images turned off initially, right?).<\/p>\n<p>So, this is likely just one more way the IETF RFC system is being abused by large corporations to continue to erode our privacy (and get their horribly designed logos in our faces).<\/p>\n<p>Let&#8217;s see who are the early adopters of BIMI.<\/p>\n<h3>BIMI Through the Alexa Looking Glass<\/h3>\n<p>Amazon had stopped updating the Alexa Top 1m sites for a while but it&#8217;s been back for quite some time so we can use it to see how many sites in the top 1m have BIMI records.<\/p>\n<p>We&#8217;ll use the <a href=\"https:\/\/git.rud.is\/hrbrmstr\/zdnsr\">{zdnsr}<\/a> package (also on GitLab, SourceHut, BitBucket, and GitUgh) to perform a million <code>default._bimi<\/code> prefix queries and see how many valid BIMI TXT record responses we get.<\/p>\n<pre><code class=\"language-r\">library(zdnsr) # hrbrmstr\/zdnsr on social coding sites\nlibrary(stringi)\nlibrary(urltools)\nlibrary(tidyverse)\n\nrefresh_publc_nameservers_list() # get a current list of active nameservers we can use\n\n# read in the top1m\ntop1m &lt;- read_csv(\"~\/data\/top-1m.csv\", col_names = c(\"rank\", \"domain\")) # http:\/\/s3.amazonaws.com\/alexa-static\/top-1m.csv.zip\n\n# fire off a million queries, storing good results where we can pick them up later\nzdns_query(\n  entities = sprintf(\"%s.%s\", \"default._bimi\", top1m$domain),\n  query_type = \"TXT\",\n  num_nameservers = 500,\n  output_file = \"~\/data\/top1m-bimi.json\",\n)\n\n# ~10-30m later depending on your system\/network\/randomly chosen resolvers\n\nbmi &lt;- jsonlite::stream_in(file(\"~\/data\/top1m-bimi.json\")) # using jsonlite vs ndjson since i don't want a \"flat\" structure\n\nidx &lt;- which(lengths(bmi$data$answers) &gt; 0) # find all the ones with non-0 results\n\n# start making a tidy data structure\ntibble(\n  answer = bmi$data$answers[idx]\n) %&gt;%\n  unnest(answer) %&gt;%\n  filter(grepl(\"^v=BIM\", answer)) %&gt;% # only want BIMI records, more on this in a bit\n  mutate(\n    l = stri_match_first_regex(answer, \"l=([^;]+)\")[,2], # get the image link\n    l_dom = domain(l) # get the image domain\n  ) %&gt;% \n  bind_cols(\n    suffix_extract(.$name) # so we can get the apex domain below\n  ) %&gt;% \n  mutate(\n    name_apex = glue::glue(\"{domain}.{suffix}\"),\n    name_stripped = stri_replace_first_regex(\n      name, \"^default\\\\._bimi\\\\.\", \"\"\n    )\n  ) %&gt;% \n  select(name, name_stripped, name_apex, l, l_dom, answer) -&gt; bimi_df\n<\/code><\/pre>\n<p>Here&#8217;s what we get:<\/p>\n<pre><code class=\"language-r\">bimi_df\n## # A tibble: 321 x 6\n##    name       name_stripped  name_apex  l                            l_dom               answer                       \n##    &lt;chr&gt;      &lt;chr&gt;          &lt;glue&gt;     &lt;chr&gt;                        &lt;chr&gt;               &lt;chr&gt;                        \n##  1 default._\u2026 ebay.com       ebay.com   https:\/\/ir.ebaystatic.com\/p\u2026 ir.ebaystatic.com   v=BIMI1; l=https:\/\/ir.ebayst\u2026\n##  2 default._\u2026 linkedin.com   linkedin.\u2026 https:\/\/media.licdn.com\/med\u2026 media.licdn.com     v=BIMI1; l=https:\/\/media.lic\u2026\n##  3 default._\u2026 wish.com       wish.com   https:\/\/wish.com\/static\/img\u2026 wish.com            v=BIMI1; l=https:\/\/wish.com\/\u2026\n##  4 default._\u2026 dropbox.com    dropbox.c\u2026 https:\/\/cfl.dropboxstatic.c\u2026 cfl.dropboxstatic.\u2026 v=BIMI1; l=https:\/\/cfl.dropb\u2026\n##  5 default._\u2026 spotify.com    spotify.c\u2026 https:\/\/message-editor.scdn\u2026 message-editor.scd\u2026 v=BIMI1; l=https:\/\/message-e\u2026\n##  6 default._\u2026 ebay.co.uk     ebay.co.uk https:\/\/ir.ebaystatic.com\/p\u2026 ir.ebaystatic.com   v=BIMI1; l=https:\/\/ir.ebayst\u2026\n##  7 default._\u2026 asos.com       asos.com   https:\/\/content.asos-media.\u2026 content.asos-media\u2026 v=BIMI1; l=https:\/\/content.a\u2026\n##  8 default._\u2026 wix.com        wix.com    https:\/\/valimail-app-prod-u\u2026 valimail-app-prod-\u2026 v=BIMI1; l=https:\/\/valimail-\u2026\n##  9 default._\u2026 cnn.com        cnn.com    https:\/\/amplify.valimail.co\u2026 amplify.valimail.c\u2026 v=BIMI1; l=https:\/\/amplify.v\u2026\n## 10 default._\u2026 salesforce.com salesforc\u2026 https:\/\/c1.sfdcstatic.com\/c\u2026 c1.sfdcstatic.com   v=BIMI1; l=https:\/\/c1.sfdcst\u2026\n## # \u2026 with 311 more rows\n<\/code><\/pre>\n<p>I should re-run this mass query since it usually takes 3-4 runs to get a fully comprehensive set of results (I should also really use work&#8217;s infrastructure to do the lookups against the authoritative nameservers for each organization like we do for our FDNS studies, but this was a spur-of-the-moment project idea to see if we should add BIMI to our studies and my servers are &#8220;free&#8221; whereas AWS nodes most certainly are not).<\/p>\n<p>To account for the aforementioned &#8220;comprehensiveness&#8221; issues, we&#8217;ll round up the total from 310 to 400 (the average difference between 1 and 4 bulk queries is more like 5% than 20% but I&#8217;m in a generous mood), so 0.04% of the domains in the Alexa Top 1m have BIMI records. Not all of those domains are going to have MX records but it&#8217;s safe to say less than 1% of the brands on the Alexa Top 1m have been early BIMI adopters. This is not surprising since it&#8217;s not really a fully baked standard and no real clients support it yet (AOL doesn&#8217;t count, apologies to the Oathers). Google claims to be &#8220;on board&#8221; with BIMI, so once they adopt it, we should see that percentage go up.<\/p>\n<p>Tracking isn&#8217;t limited to a tricked out dynamic DNS configuration that customizes selectors for each recipient. Since many brands use third party services for all things email, those clearinghouses are set to get some great data on you if these preliminary results are any indicator:<\/p>\n<pre><code class=\"language-r\">count(bimi_df, l_dom, sort=TRUE)\n## # A tibble: 255 x 2\n##    l_dom                                                                          n\n##    &lt;chr&gt;                                                                      &lt;int&gt;\n##  1 irepo.primecp.com                                                             13\n##  2 www.letakomat.sk                                                               9\n##  3 valimail-app-prod-us-west-2-auth-manager-assets.s3.us-west-2.amazonaws.com     8\n##  4 static.mailkit.eu                                                              7\n##  5 astatic.ccmbg.com                                                              5\n##  6 def0a2r1nm3zw.cloudfront.net                                                   4\n##  7 static.be2.com                                                                 4\n##  8 www.christin-medium.com                                                        4\n##  9 amplify.valimail.com                                                           3\n## 10 bimi-host.250ok.com                                                            3\n## # \u2026 with 245 more rows\n<\/code><\/pre>\n<p>The above code counted how many BIMI URLs are hosted at a particular domain and the top 5 are all involved in turning you into the product for other brands.<\/p>\n<p>Speaking of brands, these are the logos of the early adopters which I made by generating some HTML from an R script and screen capturing the browser result:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"12660\" data-permalink=\"https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/bimi-brands\/\" data-orig-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?fit=2650%2C984&amp;ssl=1\" data-orig-size=\"2650,984\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"BIMI Brand Logos\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?fit=300%2C111&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?fit=510%2C190&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?resize=510%2C189&#038;ssl=1\" alt=\"\" width=\"510\" height=\"189\" class=\"aligncenter size-full wp-image-12660\" srcset=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?w=2650&amp;ssl=1 2650w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?resize=300%2C111&amp;ssl=1 300w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?resize=530%2C197&amp;ssl=1 530w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?resize=150%2C56&amp;ssl=1 150w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?resize=768%2C285&amp;ssl=1 768w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?resize=1536%2C570&amp;ssl=1 1536w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?resize=2048%2C760&amp;ssl=1 2048w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?resize=500%2C186&amp;ssl=1 500w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?resize=1200%2C446&amp;ssl=1 1200w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?resize=400%2C149&amp;ssl=1 400w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?resize=800%2C297&amp;ssl=1 800w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?resize=200%2C74&amp;ssl=1 200w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?w=1020&amp;ssl=1 1020w\" sizes=\"auto, (max-width: 510px) 100vw, 510px\" \/><\/a><\/p>\n<h3>FIN<\/h3>\n<p>The data from the <em>successful BIMI results<\/em> of the mass DNS query is at <a href=\"https:\/\/rud.is\/dl\/2020-02-21-bimi-responses.json.gz\">https:\/\/rud.is\/dl\/2020-02-21-bimi-responses.json.gz<\/a>. Knowing there are results to be had, I&#8217;ll be setting up a regular (proper) mass-query of the Top 1m and see how things evolve over time and possibly get it on the work docket. We may just do a mass BIMI prefix query against all FDNS apex domains just to see a broader scale result, so stay tuned.<\/p>\n<p>Drop note if you discover any more insights from the data (there are a few in there I&#8217;m saving for a future post) or your own BIMI inquiries; also drop a note if you have a good defense for BIMI other than marketing and tracking.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>It seems that the need for MX, DKIM, SPF, and DMARC records for modern email setups were just not enough acronyms (and setup tasks) for some folks, resulting in the creation of yet-another-acronym &#8212; BIMI, or, Brand Indicators for Message Identification. The goal of BIMI is to &#8220;provide a mechanism for mail senders to publish [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":12660,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":3,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[681,91],"tags":[],"class_list":["post-12657","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cybersecurity","category-r"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>BIMI Up, Scotty! A look at Brand Indicators for Message Identification (BIMI) Adoption with R and the Alexa Top 1m - rud.is<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"BIMI Up, Scotty! A look at Brand Indicators for Message Identification (BIMI) Adoption with R and the Alexa Top 1m - rud.is\" \/>\n<meta property=\"og:description\" content=\"It seems that the need for MX, DKIM, SPF, and DMARC records for modern email setups were just not enough acronyms (and setup tasks) for some folks, resulting in the creation of yet-another-acronym &#8212; BIMI, or, Brand Indicators for Message Identification. The goal of BIMI is to &#8220;provide a mechanism for mail senders to publish [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/\" \/>\n<meta property=\"og:site_name\" content=\"rud.is\" \/>\n<meta property=\"article:published_time\" content=\"2020-02-21T17:28:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?fit=2650%2C984&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"2650\" \/>\n\t<meta property=\"og:image:height\" content=\"984\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"hrbrmstr\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"hrbrmstr\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/\"},\"author\":{\"name\":\"hrbrmstr\",\"@id\":\"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886\"},\"headline\":\"BIMI Up, Scotty! A look at Brand Indicators for Message Identification (BIMI) Adoption with R and the Alexa Top 1m\",\"datePublished\":\"2020-02-21T17:28:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/\"},\"wordCount\":1264,\"commentCount\":5,\"publisher\":{\"@id\":\"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886\"},\"image\":{\"@id\":\"https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?fit=2650%2C984&ssl=1\",\"articleSection\":[\"Cybersecurity\",\"R\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/\",\"url\":\"https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/\",\"name\":\"BIMI Up, Scotty! A look at Brand Indicators for Message Identification (BIMI) Adoption with R and the Alexa Top 1m - rud.is\",\"isPartOf\":{\"@id\":\"https:\/\/rud.is\/b\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?fit=2650%2C984&ssl=1\",\"datePublished\":\"2020-02-21T17:28:13+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?fit=2650%2C984&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?fit=2650%2C984&ssl=1\",\"width\":2650,\"height\":984,\"caption\":\"BIMI Brand Logos\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/rud.is\/b\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"BIMI Up, Scotty! A look at Brand Indicators for Message Identification (BIMI) Adoption with R and the Alexa Top 1m\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/rud.is\/b\/#website\",\"url\":\"https:\/\/rud.is\/b\/\",\"name\":\"rud.is\",\"description\":\"&quot;In God we trust. All others must bring data&quot;\",\"publisher\":{\"@id\":\"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/rud.is\/b\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886\",\"name\":\"hrbrmstr\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1\",\"url\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1\",\"width\":460,\"height\":460,\"caption\":\"hrbrmstr\"},\"logo\":{\"@id\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1\"},\"description\":\"Don't look at me\u2026I do what he does \u2014 just slower. #rstats avuncular \u2022 ?Resistance Fighter \u2022 Cook \u2022 Christian \u2022 [Master] Chef des Donn\u00e9es de S\u00e9curit\u00e9 @ @rapid7\",\"sameAs\":[\"http:\/\/rud.is\"],\"url\":\"https:\/\/rud.is\/b\/author\/hrbrmstr\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"BIMI Up, Scotty! A look at Brand Indicators for Message Identification (BIMI) Adoption with R and the Alexa Top 1m - rud.is","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/","og_locale":"en_US","og_type":"article","og_title":"BIMI Up, Scotty! A look at Brand Indicators for Message Identification (BIMI) Adoption with R and the Alexa Top 1m - rud.is","og_description":"It seems that the need for MX, DKIM, SPF, and DMARC records for modern email setups were just not enough acronyms (and setup tasks) for some folks, resulting in the creation of yet-another-acronym &#8212; BIMI, or, Brand Indicators for Message Identification. The goal of BIMI is to &#8220;provide a mechanism for mail senders to publish [&hellip;]","og_url":"https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/","og_site_name":"rud.is","article_published_time":"2020-02-21T17:28:13+00:00","og_image":[{"width":2650,"height":984,"url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?fit=2650%2C984&ssl=1","type":"image\/png"}],"author":"hrbrmstr","twitter_card":"summary_large_image","twitter_misc":{"Written by":"hrbrmstr","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/#article","isPartOf":{"@id":"https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/"},"author":{"name":"hrbrmstr","@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"headline":"BIMI Up, Scotty! A look at Brand Indicators for Message Identification (BIMI) Adoption with R and the Alexa Top 1m","datePublished":"2020-02-21T17:28:13+00:00","mainEntityOfPage":{"@id":"https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/"},"wordCount":1264,"commentCount":5,"publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"image":{"@id":"https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?fit=2650%2C984&ssl=1","articleSection":["Cybersecurity","R"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/","url":"https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/","name":"BIMI Up, Scotty! A look at Brand Indicators for Message Identification (BIMI) Adoption with R and the Alexa Top 1m - rud.is","isPartOf":{"@id":"https:\/\/rud.is\/b\/#website"},"primaryImageOfPage":{"@id":"https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/#primaryimage"},"image":{"@id":"https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?fit=2650%2C984&ssl=1","datePublished":"2020-02-21T17:28:13+00:00","breadcrumb":{"@id":"https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/#primaryimage","url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?fit=2650%2C984&ssl=1","contentUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?fit=2650%2C984&ssl=1","width":2650,"height":984,"caption":"BIMI Brand Logos"},{"@type":"BreadcrumbList","@id":"https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/rud.is\/b\/"},{"@type":"ListItem","position":2,"name":"BIMI Up, Scotty! A look at Brand Indicators for Message Identification (BIMI) Adoption with R and the Alexa Top 1m"}]},{"@type":"WebSite","@id":"https:\/\/rud.is\/b\/#website","url":"https:\/\/rud.is\/b\/","name":"rud.is","description":"&quot;In God we trust. All others must bring data&quot;","publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/rud.is\/b\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886","name":"hrbrmstr","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","contentUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","width":460,"height":460,"caption":"hrbrmstr"},"logo":{"@id":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1"},"description":"Don't look at me\u2026I do what he does \u2014 just slower. #rstats avuncular \u2022 ?Resistance Fighter \u2022 Cook \u2022 Christian \u2022 [Master] Chef des Donn\u00e9es de S\u00e9curit\u00e9 @ @rapid7","sameAs":["http:\/\/rud.is"],"url":"https:\/\/rud.is\/b\/author\/hrbrmstr\/"}]}},"jetpack_featured_media_url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?fit=2650%2C984&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p23idr-3i9","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":11215,"url":"https:\/\/rud.is\/b\/2018\/08\/04\/digging-into-mbox-details-a-tale-of-tm-reticulate\/","url_meta":{"origin":12657,"position":0},"title":"Digging into mbox details: A tale of tm &#038; reticulate","author":"hrbrmstr","date":"2018-08-04","format":false,"excerpt":"\u2728 I had to processes a bunch of emails for a $DAYJOB task this week and my \"default setting\" is to use R for pretty much everything (this should come as no surprise). Treating mail as data is not an uncommon task and many R packages exist that can reach\u2026","rel":"","context":"In &quot;Python&quot;","block_context":{"text":"Python","link":"https:\/\/rud.is\/b\/category\/python-2\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":12383,"url":"https:\/\/rud.is\/b\/2019\/06\/28\/quick-hit-dig-ging-into-dns-records-with-processx\/","url_meta":{"origin":12657,"position":1},"title":"Quick hit: &#8216;dig&#8217;-ging Into r-project.org DNS Records with {processx}","author":"hrbrmstr","date":"2019-06-28","format":false,"excerpt":"The r-project.org domain had some temporary technical difficulties this week (2019-29) that made reaching R-related resources problematic for a bunch of folks for a period of time. Incidents like this underscore the need for regional and network diversity when it comes to ensuring the availability of DNS services. That is,\u2026","rel":"","context":"In &quot;R&quot;","block_context":{"text":"R","link":"https:\/\/rud.is\/b\/category\/r\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1730,"url":"https:\/\/rud.is\/b\/2012\/10\/24\/extracting-ose-firewall-alert-data-from-imap-gmail-mail-to-csv\/","url_meta":{"origin":12657,"position":2},"title":"Extracting OSE Firewall Alert Data From IMAP (Gmail) Mail To CSV With Python","author":"hrbrmstr","date":"2012-10-24","format":false,"excerpt":"I played around with OSE Firewall for WordPress for a couple days to see if it was worth switching to from the plugin I was previously using. It's definitely not as full featured and I didn't see any WP database extensions where it kept a log I could review\/analyze, so\u2026","rel":"","context":"In &quot;Development&quot;","block_context":{"text":"Development","link":"https:\/\/rud.is\/b\/category\/development\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":13042,"url":"https:\/\/rud.is\/b\/2021\/04\/25\/a-small-macos-big-sur-to-extract-indicators-of-compromise\/","url_meta":{"origin":12657,"position":3},"title":"A Small macOS (Big Sur+) App to Extract Indicators of Compromise","author":"hrbrmstr","date":"2021-04-25","format":false,"excerpt":"There's a semi-infrequent-but-frequent-enough-to-be-annoying manual task at $DAYJOB that involves extracting a particular set of strings (identifiable by a fairly benign set of regular expressions) from various interactive text sources (so, not static documents or documents easily scrape-able). Rather than hack something onto Sublime Text or VS Code I made a\u2026","rel":"","context":"In &quot;Information Security&quot;","block_context":{"text":"Information Security","link":"https:\/\/rud.is\/b\/category\/information-security\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3070,"url":"https:\/\/rud.is\/b\/2014\/09\/26\/blast-from-the-past-also-reveals-a-bit-of-us-postal-history\/","url_meta":{"origin":12657,"position":4},"title":"Blast From The Past Also Reveals A Bit Of (US) Postal HIstory","author":"hrbrmstr","date":"2014-09-26","format":false,"excerpt":"I saw a re-tweet for this \"Man From Mars Radio Hat\" advertisement and\u2014while it's awesome as a bit of nostalgia on it's own\u2014it also reveals a bit about our (US) Postal history: The \"Zone\" field is not for modern ZIP codes, but for postal zones which were implemented back in\u2026","rel":"","context":"In &quot;nostalgia&quot;","block_context":{"text":"nostalgia","link":"https:\/\/rud.is\/b\/category\/nostalgia\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":270,"url":"https:\/\/rud.is\/b\/2011\/02\/28\/post-theftloss-response-recovery-with-evernote\/","url_meta":{"origin":12657,"position":5},"title":"Post-theft\/loss Response &#038; Recovery With Evernote","author":"hrbrmstr","date":"2011-02-28","format":false,"excerpt":"Last night, the kids left the garage open after sledding all afternoon and I failed to perform my usual rounds due to still being horrendously ill. At some point between 23:00 & 05:30, miscreants did a snatch & grab on some electronics and other items. Ugh. This was both a\u2026","rel":"","context":"In &quot;Physical Security&quot;","block_context":{"text":"Physical Security","link":"https:\/\/rud.is\/b\/category\/physical-security\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/12657","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/comments?post=12657"}],"version-history":[{"count":0,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/12657\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media\/12660"}],"wp:attachment":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media?parent=12657"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/categories?post=12657"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/tags?post=12657"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}