A reach  

I think you mean LEN([dmn].[DOMAIN])   

It should not matter but maybe use   

    [DOMAIN] [nvarchar](75) NOT NULL
 
and make it a clustered index  


    UPDATE dt
    SET dt.[accept] = case    
                         when [dmn].[DOMAIN] is not null
                         THEN 'NO'
                         ELSE 'Yes'
                      END
    FROM [dbo].[Data] dt 
    LEFT JOIN dbo].[Domains] dmn
          on [dmn].[DOMAIN] = SUBSTRING([dt].[email], CHARINDEX('@', [dt].[email]) + 1, LEN([dmn].[DOMAIN]))
    WHERE dt.[accept] is null